如何在 Python 中修改函数中的局部变量?



我想更改导入函数中参数的值,而不将其作为输入。例如:

# in def_function.py
def test(x):
parameter1 = 50 # default value
return parameter1*x
# in main.py
from def_function import test
print(test(1)) # It should give me 50
parameter1 = 10 # changing the value of parameter1 in test function
print(test(1)) # It should give me 10

函数内部的parameter1都在自己的范围内。它与函数定义之外的parameter1不同。

若要执行您尝试执行的操作,请将关键字参数添加到函数定义中,并为参数提供默认值:

# in def_function.py
def test(x, parameter1=50):
return parameter1*x
# in main.py
from def_function import test
print(test(1)) # It gives 50
print(test(1, parameter1=10)) # It gives 10 (as a keyword arg)
print(test(1, 10)) # It gives 10 (as a positional arg)

如果可以的话,不要使用全局变量。

另一种选择是使用nonlocal关键字。您可以在代码中执行此操作,如下所示:

def main():
def test(x):
nonlocal parameter1
return parameter1*x
parameter1 = 50 # default value
print(test(1)) # It should give me 50
parameter1 = 10 # changing the value of parameter1 in test function
print(test(1)) # It should give me 10

main()

在这里阅读更多内容: https://www.w3schools.com/python/ref_keyword_nonlocal.asp

最新更新