Форум сайта python.su
Посмотрел inspect, понял что ничего не понимаю. Если кому не трудно покажите пример.
Офлайн
Так вы сначала покажите пример что вы хотите сделать. Вот типа функция вот так вызываю - вот недоволен что большой список аргументов вот в этом месте. А иначе что вам показывать? Пардон не глянул выше…
Отредактировано doza_and (Июль 31, 2016 23:13:49)
Офлайн
Есть переменная dx, хочу чтобы при вызове функции minim(a, b, y) из функции minim получить доступ к переменной dx. Причём если она не определена в локальном пространстве имён вызывающего контекста, то подставить значение по умолчанию.
Офлайн
import inspect def test(): return inspect.stack()[1][0].f_locals def container(): variable = 123 print test()['variable'] container()
Офлайн
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)
Офлайн
Глянул код
alien308Нет, в таком варианте лучше по-человечески.
Хочу чтобы параметры волшебством передавались.
Офлайн
> Придётся костыли использовать - передавать эти данные как атрибуты функции.
Ты так получишь грязную функцию. Лучше используй каррирование:
>>> def getFoo(x, y): ... def foo(z): ... print x, y, z ... return foo >>> foo = getFoo(1, 2) >>> foo(3) 1 2 3
Офлайн
Всем большое спасибо! Смотрю предложенные решения. На данном этапе решил, как советовали, использовать классы. Получится очевидный код с чистыми функциями и не надо смотреть, чтобы себе чего-нибудь не отдавить.
Rodegast
> Придётся костыли использовать - передавать эти данные как атрибуты функции.Ты так получишь грязную функцию. Лучше используй каррирование:
Офлайн