每次打印字符串时如何获取最新时间:
我使用了以下代码:
t1 = str(datetime.datetime.now())
s1 = "%s is a programming %s since" +" "+ t1
s2 = s1%(Einstein, genius)
当我运行此代码时-时间t1显示一个恒定的时间值:
print (s2)
Einstein is a programming genius since 2018-06-24 17:33:57.484815
Einstein is a programming genius since 2018-06-24 17:33:57.484815
Einstein is a programming genius since 2018-06-24 17:33:57.484815
是否可以自动更新“ t1”的值,换句话说,每次运行代码时如何更新时间? 例如,例如:
print(s2)
Einstein is a programming genius since 2018-06-24 17:33:57.484815
Einstein is a programming genius since 2018-06-24 17:34:13.484815
Einstein is a programming genius since 2018-06-24 17:35:26.484815
先谢谢您。
(我不过是编程和python的绝对新手)。
答案 0 :(得分:4)
Python没有可自行更改其值的“魔术”变量。对诸如s2
之类的变量的引用将导致它查找与您上次为其分配内容时放入的对象相同的对象,并且它将保持不变。为了使Python在每次引用时都能执行操作,您可能想使用一个函数。例如,使s2为函数,如下所示:
def s2():
t1 = str(datetime.datetime.now())
s1 = "%s is a programming %s since" +" "+ t1
return s1%("Einstein", "genius")
现在,在代码中仅使用s2()
的地方使用s2
,Python将重新执行代码并生成一个包含当前日期/时间的新字符串。
答案 1 :(得分:2)
尝试将日期时间直接传递给字符串,而不是将其存储在变量中。
例如:
import datetime
import time
s = "%s is a programming %s since %s"
print ( s %("Einstein", "genius", datetime.datetime.now()))
time.sleep(5)
print (s %("Einstein", "genius", datetime.datetime.now()))
输出:
Einstein is a programming genius since 2018-06-24 19:07:15.697000
Einstein is a programming genius since 2018-06-24 19:07:20.700000
答案 2 :(得分:0)
您可以使函数返回应该为最新的值:
def make_time():
return str(datetime.datetime.now())
s = "%s is a programming %s since %%s" % ("Einstein", "genius")
print(s % make_time())
print(s % make_time())