Python,函数改变值
我在让这个系统正常工作时遇到了麻烦,我不太确定自己问的问题是否正确,但我想说说发生了什么,以及我希望发生什么。
money = 1
def Stats():
print
print "money " + str(money)
def gainM():
money + 2
Stats()
if money == 1:
gainM()
现在,当它要打印钱的时候,值仍然是1,尽管我已经把值加了2。(这段代码并不是我实际程序的复制,而是一个示例,用来说明发生了什么。)
2 个回答
2
你需要把新的值赋给money。可以这样做:
money = money + 2
或者用简写的方式:
money += 2
另外,如果这个变量是在你的函数外面定义的,你需要声明它为全局变量(这样就不会创建一个局部变量)
所以你最后会得到:
def gainM():
global money
money += 2
Stats()
补充说明:我并不是说你应该使用全局变量。一般来说,全局变量不是个好主意(虽然在某些情况下可能有用)。不过,这个例子确实需要这样才能正常工作。不过,你可能更想要的是一个包含实例变量的类,这样这个类的方法可以修改这些变量。不过,考虑到你似乎还没有掌握这门语言的基础,建议你一步一步来,不用担心我之前句子里你不理解的词语 :)
6
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
现在你把 money
传入了 Stats
函数。
def gainM(money):
money += 2
Stats(money)
return money