Python函数变量:local和glob

2024-10-01 04:45:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在与局部和全局变量作斗争。在

我在做这个:

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)

结果显示:

^{pr2}$

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


Tags: orfalsetrueinputrawifdef局部
3条回答

注意:你可以这样做:print bool(int(raw_input("Input 1 or 0: ")))

更像Python的方法是:

def some_func(x):
    if x == 1:
        return "True"
    elif x == 0:
        return "False"

x = int(raw_input("Input 1 or 0: "))
x = some_func(x)
print x

然而,如果您确实想使用globals,您可以这样做,但这确实是一种非常粗糙的做法,它不是python所提倡的良好的编码实践之一。在

^{pr2}$

其他注意事项: 尽量不要使用像bultins这样的名字,比如Input和{},因为这样会让事情变得不清楚,把一切都搞混了。在

基本上,您希望参数是通过引用传递的,但Python并不是这样处理基本数据类型的。Python的方法如下:

def some_func(input):
    if input == 1:
        return "True"
    elif input == 0:
        return "False"

然后呢

^{pr2}$

输入是一个int,它是一个不可变的对象。换句话说,你不能在任何地方改变它。但是,可以将其指定给其他对象。python的一个棘手的问题是要知道所有的都只是一个引用。当你给某个东西赋值时,你只需改变引用。把你的变量看作是放进盒子里的字符串。当你给一个变量赋值时,你把这个字符串放在一个特定的框中。当您将该变量分配给其他对象时,您将更改字符串所指向的框。当然,当您实际进行加法时,您添加的是框的内容,而不是字符串(这有点令人困惑)。如果你习惯用C语言编程,就好像所有的东西都是一个指针,它会自动地被取消引用(除了你做赋值的时候)。在

那么,该怎么办?最简单的方法是return函数中的值。在

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!!!!") # ;^)

现在可以将函数调用为:

^{pr2}$

作为补充说明,您的函数可以浓缩为:

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]

但我不推荐那个。。。在

相关问题 更多 >