发布于2019-09-21 10:51 阅读(517) 评论(0) 点赞(16) 收藏(5)
我正在尝试编写一个Python函数,该函数在第一次调用时返回1。在第二次调用时返回2。在第三次调用时返回3。
目前,我已经使用全局变量实现了这一点:
index = 0
def foo():
global index
index += 1
return index
三次调用该函数时:
print(foo())
print(foo())
print(foo())
它返回期望的值:
1
2
3
但是,我读到使用全局变量是一种不好的做法。因此,我想知道如果不使用全局变量就可以实现相同的结果。
有什么建议吗?
谢谢您的帮助。
使用闭包:
def make_inc():
val = [0]
def inc():
val[0] += 1
return val[0]
return inc
inc = make_inc()
print inc()
print inc()
print inc()
使用类(OOPL中最明显的解决方案):
class Inc(object):
def __init__(self):
self._val = 0
def __call__(self):
self._val += 1
return self._val
inc = Inc()
print inc()
print inc()
print inc()
使用生成器(不可直接调用,您必须使用.next()
方法):
def incgen():
val = 0
while True:
val += 1
yield val
inc = incgen()
print inc.next()
print inc.next()
print inc.next()
作者:黑洞官方问答小能手
链接:https://www.pythonheidong.com/blog/article/118015/45db9a305594c4c8af8e/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!