如何在python中的定义中保存变量?

时间:2013-12-24 12:02:37

标签: python

我有以下代码:

def thingy(res)

    if res=="food":
        res=0
    if res=="wood":
        res=1
    if res=="metal":
        res=2
    if res=="gold":
        res=3
    if res=="oil":
        res=3

res="food"

thingy(res)

print(res)

当我运行它时,当我希望它说“0”时,它会出现“食物”。我怎么能让这个工作? 非常感谢你能帮助我。

3 个答案:

答案 0 :(得分:8)

您需要返回该值,为什么不使用dictionary而不是所有if语句,它们最适合此类问题:

示例:

def thingy(res):
    myOptions = {'food':0, 'wood':1, 'metal': 2, 'gold': 3, 'oil': 3}
    return myOptions[res]

res = "food"
res = thingy(res)
print(res)

答案 1 :(得分:5)

在函数内部分配res只会更改参数res;这不会影响函数外的res

使函数返回结果。将函数的值赋给变量。

def thingy(res):
    if res=="food":
        res=0
    if res=="wood":
        res=1
    if res=="metal":
        res=2
    if res=="gold":
        res=3
    if res=="oil":
        res=3
    return res # <---

res="food"
res = thingy(res) # <---
print(res)

答案 2 :(得分:2)

通常,您想要的是将返回值分配给变量:

res = thingy(res) # instead of thingy(res)

但是如果你想要另一种选择,也许你正在寻找一个全局变量?

def thingy():
    global res
    if res=="food":
        res=0
    if res=="wood":
        res=1
    if res=="metal":
        res=2
    if res=="gold":
        res=3
    if res=="oil":
        res=3

res = "food"
thingy()
print(res)  # prints "0"

在您的示例中,函数内的res与您在函数外部定义的res不同(您可以为其中一个提供不同的名称,这无关紧要)。在这个例子中,因为行global res

但在大多数情况下,使用返回值更简单,更清晰。