Skip to main content
 首页 » 编程设计

Python 函数变量 : local and global

2025年05月04日19grandyang

我正在为局部变量和全局变量而苦苦挣扎。

我是这样做的:

def SomeFunc(Input): 
    if Input == 1: 
        Input = "True" 
    elif Input == 0: 
        Input = "False" 
 
RawInput=int(raw_input("Input 1 or 0: ")) 
SomeFunc(RawInput) 
print str(RawInput) 

它显示了这个:

>>> def SomeFunc(Input): 
    if Input ==1: 
        Input = "True" 
    elif Input ==0: 
        Input = "False" 
 
>>> RawInput = int(raw_input("Input 1 or 0: ")) 
Input 1 or 0: 1 
>>> SomeFunc(RawInput) 
>>> print str(RawInput) 
1 

我应该怎么做才能在函数中将输入转换为 str?

请您参考如下方法:

输入是一个int,它是一个不可变的对象。换句话说,您无法在任何地方更改它。但是,您可以将其分配给其他东西。关于 python 的棘手事情之一是了解到一切 只是一个引用。当您分配给某物时,您只需更改引用即可。把你的变量想象成进入盒子的字符串。当您分配给一个变量时,您将该字符串放在一个特定的框中。当您将该变量分配给其他内容时,您更改了字符串所在的框。当然,当你真正做加法时,你添加的是盒子的内容,而不是字符串(这有点令人困惑)。如果您习惯于使用 C 语言编程,那么一切都好像是一个自动取消引用的指针(除非您进行赋值)。

那么,怎么办?最简单的方法是从您的函数中返回值。

def some_func(inpt): 
    if inpt == 1: 
        return "True" 
    elif inpt == 0: 
        return "False" 
    else: 
        raise ValueError("WHAT IS THIS GARBAGE? I SAID 0 OR 1!!!!") # ;^) 

现在您可以调用您的函数:

processed_input = some_func(rw_inpt) 

作为旁注,您的函数可以浓缩为:

def some_func(inpt): 
    return str(bool(inpt)) 

或

def some_func(inpt): 
    return "True" if inpt else "False" 

这两个都通过(如果用户输入任何非 0 的整数,则返回 "True")。如果你真的想强制用户不要输入像“2”这样的东西,你可以这样做:

def some_func(inpt): 
    return {1:"True",0:"False"}[inpt] 

但我不会推荐那个......