gpt4 book ai didi

函数的 Python 最佳实践

转载 作者:太空宇宙 更新时间:2023-11-03 12:23:59 24 4
gpt4 key购买 nike

方法 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 而不是全局 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

如果你希望ids是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

关于函数的 Python 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30531204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com