我正在寻找一种在定义函数后更改函数内部定义的变量的方法。
例如
def GetNthPower(x) :
n = None
return x**n
my_numbers_list = [11,23,45,56,78,98]
# now if I feel like I need the 4th power of some numbers in the list
GetNthPower.n = 4
for x in my_numbers_list :
print GetNthPower(x)
# If I want 7th power then
GetNthPower.n = 7
这显然不行,请问有什么办法吗?
注意:我知道我们可以通过将“n”设置为函数的参数来实现这一点,但出于特殊原因我想这样做。 我希望我的函数只有一个参数(用于在 multiprocessing.Pool.map() 中使用该函数)。
请您参考如下方法:
您可以在函数内部定义静态变量,就像您所做的那样:
def GetNthPower(x) :
return x ** GetNthPower.n
GetNthPower.n = 3
print(GetNthPower(2)) #8
确保在首次使用前正确初始化您的 GetNthPower.n。
如果你担心初始化,你可以选择这个使用默认值 1 的版本:
def GetNthPower(x) :
return x ** (GetNthPower.n if hasattr(GetNthPower, "n") else 1)
我认为您还是编写一个带有两个参数的函数或使用预定义的 ** 运算符会更好。
