gpt4 book ai didi

python - 如何通过传递 **args 来更新函数变量

转载 作者:太空宇宙 更新时间:2023-11-03 15:21:09 25 4
gpt4 key购买 nike

目前我正在尝试将 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

最佳答案

我可能会误解这一点,但我认为您将遇到的问题是函数数据将跨越“实例”,因为该函数只有一个副本,并且该函数的所有使用都将共享同一个对象。请参阅以下示例:

# 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}

关于python - 如何通过传递 **args 来更新函数变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43541175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com