我想在导入的函数中更改参数的值而不将其作为输入。例如:
# 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
答案 0 :(得分:7)
parameter1
位于其自己的scope中。它与函数定义之外的parameter1
不同。
要执行您要执行的操作,请在函数定义中添加keyword argument,并为参数提供默认值:
# 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)
如果可以帮助,请不要使用全局变量。
答案 1 :(得分:1)
另一种选择是使用 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