gpt4 book ai didi

python - 使用名称列表定义变量

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

我试图在我的脚本中做一些肮脏的事情。

我有一个函数,可以对名为 model 的对象应用一些转换。 model 可以有多个属性,其中包括 alphadelta。但是,该函数必须能够使用其自己的可选参数覆盖这些属性。

我想我必须检查函数是否已收到这些参数,如果没有,请将属性重新分配给平面名称。 (从 model.alphaalpha)。这里的主要问题是编写循环代码来解决任何给定情况的问题。

我设法做到这一点的唯一方法是使用 locals() 字典,但我发现这很脏。有什么建议么?这是我的大致代码。

 def transform(model, alpha=None, theta=None):
for p in ('alpha', 'theta'): #the list is longer, actually
if not locals()[p] and hasattr(model, p):
locals()[p] = getattr(model, p)

_rotate(model, alpha)
_translate(model, delta)

最后,函数的可选参数有内部列表吗?像__parameters__之类的东西?这样,我就可以在 __parameters__ 中执行 for p 等操作。

谢谢!

最佳答案

您可以只使用 **kwargs 语法,然后直接对该 kwargs 字典而不是本地变量进行操作:

def transform(model, **kwargs):
for p in ('alpha', 'theta', ...):
if 'p' not in kwargs and hasattr(model, p):
kwargs[p] = getattr(model, p)

(您可能仍然希望显式迭代预期名称列表,以过滤掉 kwargs 中可能存在的任何意外参数。)

关于python - 使用名称列表定义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23105449/

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