我是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
注意:如果您问我,最好使用类并在类内使用它们,这是我的观点。