Python函数参数作为全局变量

Tom*_*ill 2 python function global-variables

我写了以下函数,它接受一个变量input_name.然后,用户输入一些分配给的值input_name.我想知道input_name在函数外部访问的最佳方法.我知道在函数内部将变量定义为全局变量意味着可以在函数外部使用它.但是,在这种情况下,变量实际上是函数的一个参数,所以我不确定如何将它定义为全局变量.感谢您对此有任何帮助,请在下面找到相关代码:

def input(input_name, prompt):
    while True:
        data = raw_input(prompt)
        if data:
            try:
                input_name = int(data)
            except ValueError:
                print 'Invalid input...'
            else:
                if input_name >= 0 and input_name < 100:
                    print 'Congratulations'
                    break
                input_name = 'Please try again: '
        else:
            print 'Goodbye!'
            break

month = 0
day = 0
year = 0
century = 0

input(month, "Please enter the month (from 1-12, where March is 1 and February is 12): ")
input(day, "Please enter the day (from 1-31): ")
input(year, "Please enter the year (from 0 - 99, eg. 88 in 1988): ")
input(century, "Please enter the century (from 0 - 99, eg. 19 in 1988): ")

A = month
B = day
C = year
D = century
Run Code Online (Sandbox Code Playgroud)

Ned*_*der 13

最简单的方法是返回值,并将其分配给函数外部:

def my_input(prompt):
    #.. blah blah..
    return the_value

month = my_input("Please enter the month")
# etc.
Run Code Online (Sandbox Code Playgroud)

  • @KarlKnechtel并不是说他们对它有抵抗力.我发现许多Python初学者并不真正理解return语句.有些人认为它与print不同,因为REPL默认打印返回值.请参阅此处的讨论,由Guido van Rossum发布:https://plus.google.com/115212051037621986145/posts/NJnmxZkrE4J我认为他们认为函数更像是简单的代码块或标签,而不是在给定输入时返回某些内容的过程.大多数Python教程都没有教授基本的编程概念. (3认同)
  • +1 从函数中获取信息的方式是通过返回值。我不明白为什么这么多人如此抵制这样一个简单的概念。 (2认同)

eli*_*eac 8

其他人都说这样的话:

def input(prompt):
    return value

value = input(param1,param2, ...)
Run Code Online (Sandbox Code Playgroud)

这就是你真正想要做的事情,但是你知道,你可以使用globals()来改变全局变量:

def input(input_name, prompt):
    globals()[input_name] = value
Run Code Online (Sandbox Code Playgroud)