Форум сайта python.su
0
Посмотрел inspect, понял что ничего не понимаю. Если кому не трудно покажите пример.
Офлайн
253
Так вы сначала покажите пример что вы хотите сделать. Вот типа функция вот так вызываю - вот недоволен что большой список аргументов вот в этом месте. А иначе что вам показывать? Пардон не глянул выше…
Отредактировано doza_and (Июль 31, 2016 23:13:49)
Офлайн
0
Есть переменная dx, хочу чтобы при вызове функции minim(a, b, y) из функции minim получить доступ к переменной dx. Причём если она не определена в локальном пространстве имён вызывающего контекста, то подставить значение по умолчанию.
Офлайн
88
import inspect def test(): return inspect.stack()[1][0].f_locals def container(): variable = 123 print test()['variable'] container()
Офлайн
253
alien308Ок извиите долго тупил над вашим кодом.
Есть переменная dx,
#!/usr/bin/env python # -*- coding: utf-8 -*- import numpy as np import scipy as sp import math from scipy.stats import genpareto def minim(a, b, y,dx=0.1): .... minim(a, b, f) minim(a, b, f,dx=0.2)
def f(x=3,y=5,**kvargs): print(x,y) x=3.3 y=5.3 f(**locals()) >>> (3.3, 5.3)
Отредактировано doza_and (Июль 31, 2016 23:31:04)
Офлайн
88
Глянул код
alien308Нет, в таком варианте лучше по-человечески.
Хочу чтобы параметры волшебством передавались.
Офлайн
186
> Придётся костыли использовать - передавать эти данные как атрибуты функции.
Ты так получишь грязную функцию. Лучше используй каррирование:
>>> def getFoo(x, y): ... def foo(z): ... print x, y, z ... return foo >>> foo = getFoo(1, 2) >>> foo(3) 1 2 3
Офлайн
0
Всем большое спасибо! Смотрю предложенные решения. На данном этапе решил, как советовали, использовать классы. Получится очевидный код с чистыми функциями и не надо смотреть, чтобы себе чего-нибудь не отдавить.
Rodegast
> Придётся костыли использовать - передавать эти данные как атрибуты функции.Ты так получишь грязную функцию. Лучше используй каррирование:
Офлайн