簡體   English   中英

Python function 默認參數隨機值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM