Python只在第一次调用函数时声明变量。

27 浏览
0 Comments

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日
0
0 Comments

欢迎来到闭包

你应该编写像这样的代码:

 
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)

0
0 Comments

我不同意其他回答,他们只试图直接回答你的问题。

你有一个状态(变量)和一个使用该状态的函数/函数组合。这就是的用处。

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

0