[英]Python function default argument random value
在以下代碼中,按預期生成了一個隨機值:
import random
for i in range(10):
print(random.randint(0,10))
但是,如果我使用 function,這將不起作用:
import random
def f(val: int = random.randint(0,10)):
print(val)
for i in range(10):
f()
為什么第二個代碼段的結果總是相同的數字? 我能找到的最相似的問題是這個問題,但它指的是另一種語言(我不掌握)。
默認參數表達式在您調用function 時不會被評估,它會在您創建function 時被評估。 所以無論你做什么,你總是會得到相同的價值。
解決此問題的典型方法是使用標志值並將其替換在 function 的主體內:
def f(val=None):
if val is None:
val = random.randint(0,10)
print(val)
您需要將默認值設為特定值。 為了使它像那樣動態,您需要將其默認為其他值,檢查它,然后更改值。
例如:
import random
def f(val=None):
if val is None:
val = random.randint(0,10)
print(val)
for i in range(10):
f()
調用時無法更改默認參數。 我不明白為什么需要它。 你可以像這樣簡單地做。
import random
def f():
print(random.randint(0,10))
for i in range(10):
f()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.