Python变量添加而不重置
是否有任何类型的变量允许我增加它的值,而不覆盖记忆的值?例如:Python变量添加而不重置,python,variables,types,Python,Variables,Types,是否有任何类型的变量允许我增加它的值,而不覆盖记忆的值?例如: def main(): var = 0 inc = input("Want to increase your variable?") if inc == "yes": var = var + 1 main() #restart the script from the top if inc == "no": exit() 当代码重新启动时,var将返回到其值“0”
def main():
var = 0
inc = input("Want to increase your variable?")
if inc == "yes":
var = var + 1
main()
#restart the script from the top
if inc == "no":
exit()
当代码重新启动时,var将返回到其值“0”,而不记得我们所做的“var=var+1”位,是否有任何变量类型将更新自身以匹配脚本中所做的更改?否-当您按预期更改变量时,变量的值将被更改,除非使用某些后缀增量,即使这样,该变量也只能保存该行上的“旧”状态 听起来你需要使用一个“temp”变量。虽然显示的代码并没有告诉我什么,tbh 更新: 编辑您的问题。。。我想你的意思是在函数之间需要一个全局变量,它可以记住函数调用之间的状态 这是如何制作和使用这些全局变量的一个很好的来源: 双重更新:
您的意思可能是,即使关闭程序,也希望变量记住其状态!在这种情况下,使用
pickle
作为另一个答案详细信息。如果您的意思是var
的值在迭代过程中不被保留,这与您在main()
中使用递归有关。它完全没有必要,最好用迭代代替:
var = 0
while True:
inc = input("Want to increase your variable?")
if inc == "yes":
var = var + 1
else:
break
print(var)
如果您的意思是希望在整个脚本调用过程中保留var
的值,则可以使用:
运行函数main()时,您正在将var重置回0。请注意它是如何位于函数内部的,因此函数内部的任何内容都将运行 此处var不会每次都更改为0:
var = 0
def main(number):
print number
inc = raw_input("Want to increase your variable?") # Or input() if python 3.x
if inc == "yes":
number += 1
return main(number)
if inc == "no":
return number
var = main(var)
print var
在本例中,var是一个全局变量。它可以在整个代码中访问
上面的代码在运行时:
python file.py
0
Want to increase your variable?yes
1
Want to increase your variable?yes
2
Want to increase your variable?no
2 #result of printing var at the end
我希望这能解决你的问题。如果你还有其他问题,我会尽力回答。我对python有点生疏。Python2或Python3?在Python2中,必须使用
raw\u input
而不是input
。您必须正确缩进代码!它在Python中不是可选的。你说的“代码重新启动时”是什么意思?你说的是程序关闭和重新打开时?或者当递归调用main
函数时?最好使用with
而不是依赖引用计数GC来关闭文件。文件将立即关闭这一事实是特定于CPython的,不应依赖它。当从另一个define引用main(number)时,它会给出“NameError:未定义全局名称‘number’”。这将是这样引用它的:def secondmain():ans=raw\u input(“想再次转到主代码吗?”)如果ans==“Yes”:main(number)如果ans==“No”:exit()
对不起,我是新的,我不知道必须在其周围放置代码标记。number是参数。调用函数时,用一个值填充参数。因此,当您执行main()时,必须输入一个参数:例如,main(4)。如果您仍然有问题,这里有一个指向我在docs.python中找到的基本函数帮助的链接:
python file.py
0
Want to increase your variable?yes
1
Want to increase your variable?yes
2
Want to increase your variable?no
2 #result of printing var at the end