Skip to main content
 首页 » 编程设计

python之在 Python 中定义函数后如何更改函数范围内的变量

2025年05月04日20yxwkf

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

例如

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) 

我认为您还是编写一个带有两个参数的函数或使用预定义的 ** 运算符会更好。