首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python有没有类似于Perl5.10的"state“变量?

Python有没有类似于Perl5.10的"state“变量?
EN

Stack Overflow用户
提问于 2009-03-03 00:17:48
回答 11查看 1.3K关注 0票数 8

在Perl 5.10中,我可以这样说:

代码语言:javascript
复制
sub foo () {
  state $x = 1;
  say $x++;
}

foo();
foo();
foo();

...and它将打印出来:

代码语言:javascript
复制
1
2
3

Python有这样的东西吗?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2009-03-03 00:30:12

最接近的并行方法可能是将值附加到函数本身。

代码语言:javascript
复制
def foo():
    foo.bar = foo.bar + 1

foo.bar = 0

foo()
foo()
foo()

print foo.bar # prints 3
票数 12
EN

Stack Overflow用户

发布于 2009-03-03 00:27:46

在这里,类可能更适合(通常更适合涉及“state”的任何内容):

代码语言:javascript
复制
class Stateful(object):

    def __init__(self):
        self.state_var = 0

    def __call__(self):
        self.state_var = self.state_var + 1
        print self.state_var

foo = Stateful()
foo()
foo()
票数 18
EN

Stack Overflow用户

发布于 2009-03-03 00:28:48

Python有一些生成器可以做类似的事情:

What does the "yield" keyword do in Python?

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/604622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档