在下面的代码中,按照预期生成了一个随机值:
import random
for i in range(10):
print(random.randint(0,10))
但是,如果我使用函数,这将不起作用:
import random
def f(val: int = random.randint(0,10)):
print(val)
for i in range(10):
f()
为什么第二个代码片段的结果总是相同的数字?我能找到的最相似的问题是this一个,但它指的是一种不同的语言(我不掌握)。
当您执行以下操作时,不会计算默认参数表达式:call该函数,当您进行评估时create功能。因此,无论您做什么,您总是会获得相同的值。
解决此问题的典型方法是使用标志值并在函数体内替换它:
def f(val=None):
if val is None:
val = random.randint(0,10)
print(val)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)