我正在尝试调用一个包含在另一个函数中的函数。我知道每个内部函数都是单独工作的,因为我在将它们组合到 rollDice()
中之前对它们进行了测试。
当我尝试运行代码时,它始终告诉我基本上每个变量(d20
、d10
等)都是未定义的,即使我有 rollDice()
函数正在运行。
如何让我的内部函数 (d6(roll6)
) 输出在使用 rollDice(roll)
函数后为其分配的值?
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)
关于Python:调用另一个被调用函数内部的函数时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55584204/