Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python变量添加而不重置_Python_Variables_Types - Fatal编程技术网

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