引用其他函数输出的函数 - 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() 生成的随机数?

一个简单的方法是使用 returnargs

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)