我遇到静态变量的问题。如果页面刷新,则变量的最后一个值将丢失。这是代码:
import os
origfile = "original.log"
tempfile = "copy.tmp"
## read from tempfile, if exists, otherwise from original log-file
if os.path.exists(tempfile):
fp = open(tempfile)
else:
fp = open(origfile)
lines = fp.readlines()
fp.close()
for lineno, line in enumerate(lines):
handled = handle_line(line) ## call function to handle the line,
## return False if handling was not finished
if not handled: ## if handling was not finished, save remaining lines
fp = open(tempfile, "w")
fp.write("".join(lines[lineno:]))
fp.close()
raise SystemExit()
## when finished and all lines are handled, remove existing tempfile
if os.path.isfile(tempfile):
os.remove(tempfile)
答案 0 :(得分:3)
如果刷新页面,则变量的最后一个值将丢失。
刷新页面时,窗口会话中存储的所有值都将丢失,并且会创建新的sesssion。
除非您将值存储在浏览器的存储空间中,否则您不会保留这些值。
答案 1 :(得分:1)
当您刷新页面时,所有存储的值都会丢失,因为它可以保留变量值。这可以使用window.localStorage
(或window.sessionStorage
)。 MDN的DOM存储指南(下面链接)解释了这种差异。
当您需要设置应在下一页中反映的变量时,请使用:
var someVarName = "value";
localStorage.setItem("someVarName", someVarName);
在任何页面中(例如页面加载时),请将其命名为:
var someVarName = localStorage.getItem("someVarName");
.getItem()
将返回null或存储的值。
请注意,只有字符串值可以存储在此存储中,但可以使用JSON.stringify
和JSON.parse
来解决此问题。从技术上讲,无论何时拨打.setItem()
,它都会在值上调用.toString()
并存储该值。
MDN的DOM存储指南(链接如下),有解决方法/ polyfills,如果localStorage
无法使用,最终会回退到Cookie之类的内容。
使用现有的,或创建自己的迷你库,抽象出保存任何数据类型(如对象文字,数组等)的能力,这不是一个坏主意。