[英]Python: Problems calling a function which is inside another called function
我正在嘗試調用包含在另一個函數內部的一個函數。 我知道每個內部功能都是單獨工作的,因為在將它們組合到rollDice()
之前先對其進行了測試。
當我嘗試運行代碼時,它始終告訴我,即使我正在運行rollDice()
函數,基本上每個變量( d20
, d10
等)都未定義。
在具有rollDice(roll)
函數之后,如何獲取內部函數( d6(roll6)
)以輸出其分配的值?
def diceRoll(roll):
def d20(roll20):
import random
roll20 = random.randint(1,20)
print("The roll is ", roll20)
return roll20
def d12(roll12):
import random
roll12 = random.randint(1,12)
print("The roll is ", roll12)
return roll12
def d6(roll6):
import random
roll6 = random.randint(1,6)
print("The roll is ", roll6)
return roll6
####### example of other part of code
def generateDungeon():
diceRoll(roll)
numberOfRooms = roll6
print("The roll was: ", roll6)
if numberOfRooms > 1:
print("There are ", numberOfRooms, "rooms in this dungeon.")
else:
print("There is only 1 room in this dungeon.")
return numberOfRooms
通過執行外部函數,您不會執行任何內部函數。 無論如何,它們的變量超出范圍。
如果您確實想在函數中使用一個函數(順便說一下,在這種情況下是不必要的),則可以使用閉包使代碼更加簡潔。 另外,只需在頂部一次導入軟件包就更容易了:
import random
def diceRoll(roll):
def helper():
r = random.randint(1, roll)
print("The roll is", r)
return r
return helper
然后,要使用它,請調用diceRoll
的返回值:
numberOfRooms = diceRoll(6)()
請注意,整個過程可以這樣完成:
def diceRoll(roll):
r = random.randint(1, roll)
print("The roll is", r)
return r
並稱為:
numberOfRooms = diceRoll(6)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.