Python,函数更改值

发布于 2021-01-29 16:43:43

因此,我无法使该系统正常工作,并且不能确定我在问正确的问题,但是这是正在发生的事情以及我想发生的事情。

money = 1
def Stats():
     print
     print "money " + str(money)

def gainM():
     money + 2
     Stats()

if money == 1:
     gainM()

现在,当进行打印时会发生什么,即使我将值加2,该值仍为1。(代码不是我实际程序的副本,而是显示正在发生的情况的示例。)

关注者
0
被浏览
40
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    money + 2是无人操作。您实际上必须分配money一个新值

    money = money + 2
    # or
    money += 2
    

    但是随后您会发现您遇到了一个错误-您无法将其分配给函数范围之外的变量。您可以使用global关键字:

    global money
    money += 2
    

    这将允许您更改money函数内的值。

    但是,推荐的方法是money作为参数传递:

    def gainM(money):
        money += 2
        Stats()
        return money
    
    if money == 1:
        money = gainM(money)
    

    如果您使用的是第二个选项(应该使用),则还需要更改Stats函数以具有money参数。

    def Stats(money):
         print
         print "money " + str(money)
    

    否则,将打印功能1而不是3

    另一个建议-使用字符串格式。

    'money %d' % money  # the old way
    'money {}'.format(money)  # the new and recommended way
    

    现在,您传递moneyStats函数。

    def gainM(money):
        money += 2
        Stats(money)
        return money
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看