引用其他函数输出的函数 - Python
Functions that refer to the output of other functions - Python
我一直无法让依赖于另一个函数输出的函数工作。当我运行下面的代码(这是一个非常简化的版本)...
from random import randint
def event():
if m == 1:
r = randint(0, 4)
else:
r = randint(3, 7)
def random():
if r == 1:
print "Test A"
elif r == 2:
print "Test B"
elif r == 3:
print "Test C"
elif r == 4:
print "Test D"
elif r == 5:
print "Test E"
elif r == 6:
print "Test F"
m = 1
event()
random()
m = 2
event()
random()
m = 3
event()
random()
...我得到 NameError: global name 'r' is not defined
我需要将它们保存在单独的函数中,因为在我的实际代码中它们非常复杂。如何让 random() 识别 event() 生成的随机数?
一个简单的方法是使用 return
和 args
def event():
if m == 1:
r = randint(0, 4)
else:
r = randint(3, 7)
return r # return variable r here
r = event() # accept variable r here from event
random(r) # pass it to random function
def random(r) # receive r from the caller
.... # Use r as a variable
虽然返回变量是实现目标的好方法,但有时您确实需要 global 个变量。在这种情况下,在赋值之前将 global r
放入 event()
的定义中。例如:
def event():
global r
if m == 1:
r = randint(0, 4)
else:
r = randint(3, 7)
我一直无法让依赖于另一个函数输出的函数工作。当我运行下面的代码(这是一个非常简化的版本)...
from random import randint
def event():
if m == 1:
r = randint(0, 4)
else:
r = randint(3, 7)
def random():
if r == 1:
print "Test A"
elif r == 2:
print "Test B"
elif r == 3:
print "Test C"
elif r == 4:
print "Test D"
elif r == 5:
print "Test E"
elif r == 6:
print "Test F"
m = 1
event()
random()
m = 2
event()
random()
m = 3
event()
random()
...我得到 NameError: global name 'r' is not defined
我需要将它们保存在单独的函数中,因为在我的实际代码中它们非常复杂。如何让 random() 识别 event() 生成的随机数?
一个简单的方法是使用 return
和 args
def event():
if m == 1:
r = randint(0, 4)
else:
r = randint(3, 7)
return r # return variable r here
r = event() # accept variable r here from event
random(r) # pass it to random function
def random(r) # receive r from the caller
.... # Use r as a variable
虽然返回变量是实现目标的好方法,但有时您确实需要 global 个变量。在这种情况下,在赋值之前将 global r
放入 event()
的定义中。例如:
def event():
global r
if m == 1:
r = randint(0, 4)
else:
r = randint(3, 7)