Python在函数中使用“global”来返回新变量

时间:2013-08-17 05:10:24

标签: python python-2.7 global

我在编程和LPTHW工作方面相对较新。我想构建一个函数,它将检查raw_input()是否为数字,然后返回float(输入)或简单地返回原始输入(如果不是数字)。

我已经确定input.isdigit()是一个可以接受的函数,但是现在我正在努力构建在if语句编译后实际返回变量的函数。我相信使用全局函数会对我有所帮助,但在阅读了一些帖子之后,听起来并不像全局是非常“有效”的工具。

这就是我到目前为止所拥有的。

def Number_Check(input):
    global input
    if input.isdigit():
        input = float(input)
    else:
        input = input

在shell中运行它会给我一个错误:

SyntaxError: name 'input' is local and global (ex36.py, line 19)

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

忘记global,你不需要它;当您想要在不同函数调用之间共享状态时,有时只需要global。由于输入值始终是调用的新内容,global绝对是您应该使用的内容。请尝试以下

def number_check(input):
    """
    if the given input can be converted to a float, return
    the float, otherwise return the input as a string unchanged.
    """
    try:
        return float(input)
    except ValueError:
        return input

# and use like this:

string = raw_input()
number_or_string = number_check(input)

答案 1 :(得分:1)

您的代码中有两个输入。一个是参数,另一个是全局变量。编译器不知道哪一个是你所指的那个。也许改变其中一个的名字?

input = input

这没有任何意义。你想说输入保持不变吗?然后简单地删除其他部分!而且你不需要全局变量。您可以直接返回值!