目前我正在努力获得Python的类功能'进入一个功能。
示例代码:
def image_gen(**kwargs):
anglerange= 45
print(image_gen.__dict__)
image_gen.__dict__.update(kwargs)
print(image_gen.__dict__)
print(anglerange)
args = dict(anglerange=15)
image_gen(**args)
返回:
{}
{'anglerange': 15}
45
这不是解决参数更新的正确方法,但它的正确方法是什么?在类中,您可以调用self.update.__dict__
,如何在函数中配置?
我需要在函数中初始化参数,以便运行标准副本。
使用Python 3.5
答案 0 :(得分:1)
我可能误解了这一点,但我认为你要遇到的问题是功能数据会带来"实例"因为只有一个函数的副本,并且该函数的所有使用将共享同一个对象。请参阅以下示例:
# helper function, not really relevant
def print_non_builtins(func):
orig = dir(func) + ['inspect']
func.inspect = lambda: {k: getattr(func, k) for k in dir(func) if k not in orig}
return func
@print_non_builtins
def function_with_data(**kwargs):
for k, v in kwargs.items():
setattr(function_with_data, k, v)
function_with_data(a=1, b=2)
print(function_with_data.inspect())
# {'a': 1, 'b': 2}
function_with_data(b=3)
print(function_with_data.inspect())
# {'a': 1, 'b': 3}
答案 1 :(得分:0)
逻辑不清楚...按键更新字典值:
def image_gen(**kwargs):
print(kwargs)
kwargs['anglerange'] = 45
print(kwargs)
image_gen(**{'anglerange': 15})
{'anglerange': 15}
{'anglerange': 45}
参数通常不会在函数体中发生变化,它们可以循环重写等。其他例子:
def image_gen(anglerange=45):
print anglerange
image_gen()
45
image_gen(15)
15
和
def rewrite_example(a):
i = 0
i = 1
while i < 3:
print("i =", i, a)
i += 1
rewrite_example('text')
i = 1 text
i = 2 text