我正在寻找一种在定义函数后更改函数内部定义的变量的方法。

例如

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.B:我知道我们可以通过将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)


我认为最好编写一个带有两个参数的函数,或者使用预定义的**运算符。

关于python - 在Python中定义函数后,如何在函数范围内更改变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58769185/

10-10 21:47