我遇到一个问题,想按名称将变量带入函数中。
到目前为止,我已经尝试过了:
x = 5
def func(y = x):
return y ** 2
>>>print func()
25
>>>x = 4
>>>print func()
25
但是,如果我在输入代码后尝试编辑该输入变量,则该功能将检测到旧输入,因此它仍然会打印出与新输入平方相反的25。
有没有一种更干净的方法将变量拉入实际起作用的函数中?
默认函数值是在函数创建时计算的,因此即使您更改了默认值,x
也不会在函数中对其进行更改。
从文档:
执行功能定义时,将评估默认参数值。这意味着在定义函数时,表达式将被计算一次,并且每次调用均使用相同的“预计算”值。
读取:将mutable
对象用作默认值可能会导致意外结果。
如果要访问全局值,则只需执行以下操作:
def func():
return x**2
或更好地明确传递它:
def func(y):
return y**2
>>> x = 10
>>> def func():
... print x
... x = 5
...
>>> func()
Traceback (most recent call last):
func()
File "<ipython-input-5-ab38e6cadf6b>", line 2, in func
print x
UnboundLocalError: local variable 'x' referenced before assignment
使用classes
:
class A:
x = 5
@staticmethod
def func():
return A.x**2
...
>>> A.func()
25
>>> A.x = 10
>>> A.func()
100
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句