我是python的新手。
python中是否有static
关键字的类似物?我需要实现一个简单的函数,从池中分配一个整数 ID,实际上它只是递增一个全局变量并返回它:
id = -1
def generate_id():
global id
id += 1
return id
这是正确的方法吗?C
我可以在函数中声明一个static
变量。
简单的方法是返回一个"生成器"函数,该函数在局部上形成闭包,然后只操作局部:
def new_id_generator():
id = 0
def gen():
nonlocal id
id += 1
return id
return gen
g = new_id_generator()
print(g(), g()) # 1 2
在python中,没有像java那样的"static"关键字。
对于功能
您可以向函数添加属性,并将其用作静态变量。
def incrfunc():
incrfunc.tab += 1
print incrfunc.tab
# initialize
incrfunc.tab = 0
对于类
但是,如果您正在使用python中的类,则以下是语言约定。
在类声明中赋值的所有变量都是 类变量。以及在类中赋值的变量 方法是实例变量。
class CSStudent:
stream = 'cse' # Class Variable
def __init__(self,name,roll):
self.name = name # Instance Variable
self.roll = roll # Instance Variable
注意:如果你问我,利用类并在类外使用它们总是好的,这是我的意见。