通过函数发送许多变量

时间:2017-02-08 03:14:33

标签: python if-statement int

我不知道定义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()

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分: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()本地范围内; second()不知道great是什么/哪里。使great全局(即可用于其他功能)解决了您的问题。

编辑:上面的代码确实有效,但也许更好的做事方式(按照下面的建议),就像这样:

great = 1

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

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

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

答案 2 :(得分:1)

变量greatfirst()中本地定义。它在second()中不存在。您正在测试不存在的变量的相等性。

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

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

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

first()