我正在尝试调用包含在另一个函数内部的一个函数。我知道每个内部功能都是单独工作的,因为在将它们合并到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
答案 0 :(得分:3)
通过执行外部函数,您不会执行任何内部函数。无论如何,它们的变量超出范围。
如果您确实想在函数中使用一个函数(顺便说一下,在这种情况下是不必要的),则可以使用闭包使代码更加简洁。另外,只需一次在顶部导入软件包,就更容易了:
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)