python3:Python中是否有一种静态变量?

问题描述 投票:0回答:2

我是python的新手。

在python中是否有static关键字的类似物?我需要实现一个简单的函数,该函数从池中分配一个整数ID,实际上,它只是增加一个全局变量并返回它:

id = -1

def generate_id():
    global id
    id += 1
    return id

这是正确的方法吗?在C中,我可以在函数中声明static变量。

python-3.x static global-variables
2个回答
0
投票

简单的方法是返回一个“生成器”函数,该函数在本地上形成闭包,然后操作本地:

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

0
投票

在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 

注意:如果您问我,最好使用类并在类内使用它们,这是我的观点。

© www.soinside.com 2019 - 2024. All rights reserved.