在以下代码中,将按预期生成一个随机值:
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 one,但它指的是另一种语言(我不精通)。
发布于 2020-06-16 16:12:05
在调用函数时不计算默认参数表达式,而是在创建函数时对其进行计算。所以不管你做什么,你都会得到同样的价值。
解决这一问题的典型方法是使用一个标志值并在函数的正文中替换它:
def f(val=None):
if val is None:
val = random.randint(0,10)
print(val)发布于 2020-06-16 16:26:27
在调用时不能更改默认的param。我不明白为什么要这么做。你可以这样做。
import random
def f():
print(random.randint(0,10))
for i in range(10):
f()https://stackoverflow.com/questions/62412902
复制相似问题