【问题标题】:Sending many variables through functions通过函数发送许多变量
【发布时间】:2017-02-08 03:14:32
【问题描述】:

我不知道定义 var 的规则。 为什么这不起作用? 有没有一种方法可以将许多变量从一个函数发送到另一个函数,或者我需要重新定义每个函数中的变量以使其持久?

def first():
  great = 1
  print(great)
  second()

def second(great):
  # Do I need to re-define great here
  if great == 1:
    cool = 3001
  third(great, cool)

def third(great, cool):
  if great > 1:
    print(cool)
  # To make great = 1 here?

first()

【问题讨论】:

标签: python if-statement int


【解决方案1】:

因为great是在first()的范围内定义的,而不是second()。您需要将功能更改为:

def first():
    great = 1
    # code
    second(great)

def second(great):
    if great == 1:
        # code

【讨论】:

    【解决方案2】:

    在 Python 中查找 globals。这有效:

    def first():
       global great
       great = 1
       print(great)
       second()
    
    def second():
       if great == 1:
         print ("awesome")
       else:
         print("God damn it!")
    
    first()
    

    在您的原始函数中,great 仅在 first()local 范围内; second() 不知道 great 是什么/在哪里。将 great 设为全局(即可用于其他功能)可以解决您的问题。

    编辑:上面的代码确实可以工作,但也许是一种更好的做事方式(根据下面的建议),如下所示:

    great = 1
    
    def first():
        print(great)
        second()
    
    def second():
        if great == 1:
            print("awesome")
        else:
            print("God damn it!")
    

    或者更好的方法是将great(作为参数)的值实际传递给每个函数。

    【讨论】:

    • 您的代码不起作用。在让他进入函数之前,您需要定义全局变量greatglobal 不创建变量,而是从外部作用域获取变量。
    【解决方案3】:

    变量great 在本地定义在first() 中。它在second() 中不存在。您正在测试一个不存在的变量是否相等。

    将变量从一个函数传递给另一个函数...

    def first():
      great = 1
      print(great)
      second(great)
    
    def second(great):
      if great == 1:
        print ("awesome")
      else:
        print("God damn it!")
    
    first()
    

    【讨论】:

      猜你喜欢
      • 2016-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-07
      • 2018-01-18
      • 2017-11-30
      • 1970-01-01
      相关资源
      最近更新 更多