Python只在第一次调用函数时声明变量。
Python只在第一次调用函数时声明变量。
这个问题已经有答案了:
我在Python中有一个函数,我想在第一次调用此函数时只声明2个变量,然后更改它们的值,类似于以下内容:
def function(): x=0 z=2 if(x>z): other_function() else: x+=1
这样,每次调用function()
时,x变为0,z变为2。
我试图在函数外部使它们成为全局变量,但它给了我一个错误:
UnboundLocalError:调用之前未定义本地变量“x”
我该如何在第一次调用function()时声明这些值?
admin 更改状态以发布 2023年5月24日
欢迎来到闭包
你应该编写像这样的代码:
def f(x):
def g(y):
return x + y
return g
def h(x):
return lambda y: x + y
a = f(1)
b = h(1)
f(1)(5)
h(1)(5)
我不同意其他回答,他们只试图直接回答你的问题。
你有一个状态(变量)和一个使用该状态的函数/函数组合。这就是类的用处。
class myclass: def __init__(self): self.x = 0 self.z = 2 def myfunction(self): if self.x > self.z: other_function() # Possibly self.other_function() # if that one also uses x or z else: self.x += 1
用法如下:
instance = myclass() instance.myfunction() instance.myfunction() # Etc