我正在尝试用Python制作闹钟,但我的代码似乎无法正常工作。你能检查一下吗?
import time
from time import localtime
from time import asctime
from time import sleep
import datetime
def Checktime():
global time
time = time.asctime(time.localtime(time.time()))
return time
while True:
Checktime()
print(time[11:-5])
sleep(2)
print("Done")
我在Idle3中遇到的错误是:
16:40:18
Done
Traceback (most recent call last):
File "C:\Python34\time test.py", line 14, in <module>
Checktime()
File "C:\Python34\time test.py", line 10, in Checktime
time = time.asctime(time.localtime(time.time()))
AttributeError: 'str' object has no attribute 'asctime'
答案 0 :(得分:1)
第一次执行
time = time.asctime(time.localtime(time.time()))
然后全局名称time
绑定到模块。因此,您调用asctime()
方法,该方法返回一个字符串,并绑定到全局名称time
。
下次执行
time = time.asctime(time.localtime(time.time()))
然后全局名称time
是一个字符串。
您应该重新考虑使用time
表示两种不同内容的尝试。我建议您暂时停止使用global
。作为一般规则,您应该尝试避免这样做。该函数已返回一个值。这很好。
代码可以这样写:
import time
import datetime
def Checktime():
return time.asctime(time.localtime(time.time()))
while True:
asctime = Checktime()
print(asctime[11:-5])
sleep(2)
print("Done")
FWIW,CheckTime()
是函数的弱名称。以get
开头的名称似乎更具信息性。