您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

为什么Python没有静态变量?

为什么Python没有静态变量?

忽略这一点的想法是,静态变量仅在以下两种情况下才有用:何时真正应该使用类以及何时真正应该使用生成器。

如果要将状态信息附加到函数,则需要一个类。也许是一个简单的类,但是仍然是一个类:

def foo(bar):
    static my_bar # doesn't work

    if not my_bar:
        my_bar = bar

    do_stuff(my_bar)

foo(bar)
foo()

# -- becomes ->

class Foo(object):
    def __init__(self, bar):
        self.bar = bar

    def __call__(self):
        do_stuff(self.bar)

foo = Foo(bar)
foo()
foo()

如果您希望函数的行为在每次调用时都发生变化,则需要一个生成器:

def foo(bar):
    static my_bar # doesn't work

    if not my_bar:
        my_bar = bar

    my_bar = my_bar * 3 % 5

    return my_bar

foo(bar)
foo()

# -- becomes ->

def foogen(bar):
    my_bar = bar

    while True:
        my_bar = my_bar * 3 % 5
        yield my_bar

foo = foogen(bar)
foo.next()
foo.next()

当然,静态变量 快速和肮脏的脚本,让你不想处理大结构的小任务的麻烦有用。但是在那儿,您实际上只需要什么global就可以了,这看起来似乎有点笨拙,但是对于小的一次性脚本来说,这是可以的:

def foo():
    global bar
    do_stuff(bar)

foo()
foo()
python 2022/1/1 18:36:09 有237人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶