可以写一个函数吗f
它采用任意混合数据元组:
T = 1.0
N = 20
L = 10
args = (T,N,L)
f(*args) # or maybe f(T,N,L)?
并作为输出返回:
{'T':1.0, 'N':20, 'L':10}
有一个相关问题 https://stackoverflow.com/questions/3972872/python-variables-as-keys-to-dict using local
,但一旦名称传递给函数,我似乎就会丢失名称。有办法防止这种情况吗?我猜测变量是按值传递的,因此它们被认为是新对象。
跟进: Python:使用虚拟类来传递变量名称? https://stackoverflow.com/questions/9586805/python-using-a-dummy-class-to-pass-variable-names
不,这一般来说是不可能的*args
。您必须使用关键字参数:
>>> def f(**kwargs):
... return kwargs
...
>>> f(T=1.0, N=20, L=10)
{'T': 1.0, 'L': 10, 'N': 20}
原因是*args
不引入各个参数的名称;它仅介绍名称args
查看它们的完整列表。该函数无法洞察参数在其外部的名称(如果有)。
当参数数量固定时,您可以这样做locals
:
>>> def g(T, N, L):
... return locals()
...
>>> g(T=1.0, N=20, L=10)
{'L': 10, 'T': 1.0, 'N': 20}
(或明确地与return {'T': T, 'N': N, 'L': L}
.)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)