mus*_*shi 3 python random function
在下面的代码中,按照预期生成了一个随机值:
import random
for i in range(10):
print(random.randint(0,10))
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用函数,这将不起作用:
import random
def f(val: int = random.randint(0,10)):
print(val)
for i in range(10):
f()
Run Code Online (Sandbox Code Playgroud)
为什么第二个代码片段的结果总是相同的数字?我能找到的最相似的问题是这个,但它指的是一种不同的语言(我不掌握)。
默认参数表达式在调用函数时不会计算,而是在创建函数时计算。因此,无论您做什么,您总是会获得相同的值。
解决此问题的典型方法是使用标志值并在函数体内替换它:
def f(val=None):
if val is None:
val = random.randint(0,10)
print(val)
Run Code Online (Sandbox Code Playgroud)