【问题标题】:Functions that refer to the output of other functions - Python引用其他函数输出的函数 - Python
【发布时间】:2015-03-28 20:29:33
【问题描述】:

我一直无法让依赖于另一个函数输出的函数工作。当我运行以下代码时(这是一个非常简化的版本)...

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() 生成的随机数?

【问题讨论】:

    标签: python function random nameerror defined


    【解决方案1】:

    一个简单的方法是使用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
    

    【讨论】:

      【解决方案2】:

      虽然返回变量是实现目标的好方法,但有时您确实需要有 global 变量。在这种情况下,将global r 放入event() 的定义中,然后再分配给它。例如:

      def event():
          global r
      
          if m == 1:
              r = randint(0, 4)
          else:
              r = randint(3, 7)
      

      【讨论】:

      • 感谢您的帮助! “global r”在我的代码的某些部分起作用,但后来当变量不断被重新分配时,我就被甩了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      相关资源
      最近更新 更多