加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python函数的最佳实践

发布时间:2020-12-20 12:32:17 所属栏目:Python 来源:网络整理
导读:方法1(全局变量): id_constant = 1000id_cnt = 1def give_id(): global id_cnt id_cnt += 1 return id_constant * id_cntid = give_id() 方法2(fuc var而不是global var): id_cnt = 1def give_id(): id_constant = 1000 global id_cnt id_cnt += 1 return
方法1(全局变量):

id_constant = 1000
id_cnt = 1
def give_id():
    global id_cnt
    id_cnt += 1
    return id_constant * id_cnt
id = give_id()

方法2(fuc var而不是global var):

id_cnt = 1
def give_id():
    id_constant = 1000
    global id_cnt
    id_cnt += 1
    return id_constant * id_cnt
id = give_id()

方法3(通过全球大战):

id_cnt = 1
id_constant = 1000
def give_id(constant,cnt):
    return constant * cnt
global id_cnt
id_cnt +=1
id = give_id(id_constant,id_cnt)

我不确定是否有任何一般的经验法则但是被广泛接受的函数来访问函数内的全局变量?或者如果变量仅用于函数,那么它应该是函数变量的一部分吗?

解决方法

该方法通常取决于具体情况.

你似乎需要独特的ID,为什么不使用发电机:

def create_id_generator():
    """Returns an id generator."""
    i = 0
    while True:
        yield i
        i += 1

与next()函数一起使用:

>>> ID_GENERATOR = create_id_generator()  # Global variable
>>> my_id = next(ID_GENERATOR)
>>> my_id2 = next(ID_GENERATOR)
>>> my_id3 = next(ID_GENERATOR)
>>> print(my_id,my_id2,my_id3,next(ID_GENERATOR))
0 1 2 3

如果希望id为1000的倍数,可以通过参数将常量传递给生成器:

def create_id_generator(multiplier=1000):
    """Returns an id generator."""
    i = 0
    while True:
        yield i * multiplier
        i += 1

如果您不想从索引0开始,甚至可以添加起始值:

def create_id_generator(multiplier=1000,start_index=0):
    """Returns an id generator."""
    while True:
        yield start_index * multiplier
        start_index += 1

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读