【问题标题】:Python datetime vs timePython日期时间与时间
【发布时间】:2014-05-21 01:53:14
【问题描述】:

这是我的代码中给我带来麻烦的区域。它与导入时间与 从日期时间导入日期时间,时间。显然,一个语句不可调用 如果我尝试重新排列它会使另一个语句不可调用。请参阅底部的错误代码。任何帮助将很高兴在此处输入代码

import time
from datetime import datetime, date , tzinfo, timedelta, time
from pytz import timezone
import pytz
from twitter import *


t = time(3,0,0,0)
  print(t)
  now = datetime.utcnow()
  nowYear = int(now.year)
  nowMonth = int(now.month)
  nowDay = int(now.day)
  nowHour = int(now.hour)
  nowMin = int(now.minute)
  nowSec = int(now.second)
  now = datetime(nowYear, nowMonth, nowDay, nowHour , nowMin, nowSec, tzinfo=utc)
  tomorrow = datetime(nowYear, nowMonth, nowDay +1, 7 , 0, 0, tzinfo=utc)
  now = now.astimezone(timeZone)
  #tomorrow = tomorrow.astimezone(timeZone)
  print(now)
  print(tomorrow)
  delta = timedelta()
  delta = tomorrow - now

  deltaS = delta.total_seconds()

  time.sleep(30)

如果我重新排列导入或删除一个或在代码中导入,我会得到这两个错误之一 Raceback(最近一次通话最后一次):

File "pract.py", line 164, in <module>
    main()
  File "pract.py", line 142, in main
    t = time(3,0,0,0)
UnboundLocalError: local variable 'time' referenced before assignment

or 

traceback (most recent call last):
  File "pract.py", line 164, in <module>
    main()
  File "pract.py", line 142, in main
    t = time(3,0,0,0)
UnboundLocalError: local variable 'time' referenced before assignment

女士们和男士们,感谢您抽出宝贵的时间,并期待您的回复,我们将不胜感激。

【问题讨论】:

标签: python datetime python-3.x time


【解决方案1】:

我认为错误在于您对名称 time 粗心。在不同的时间,有两个或三个不同的事物以该名称出现(并且相互遮蔽或覆盖)。

前两个来自您的导入:

import time
from datetime import datetime, date , tzinfo, timedelta, time

在两行末尾注明time。第二个将用datetime.time 覆盖time 模块。如果您尝试从模块中调用某些内容(例如 time.sleep),您会收到一个错误,因为它不可用。

这种事情的通常解决方案是不要使用from module import name 导入样式,因为它会污染您的命名空间。只需执行import datetime,然后使用datetime.time 即可明确访问time 类型,而不会影响time 模块。另一种选择是使用as 将其中一个导入的值别名为不同的名称:import time as time_module

您的异常似乎表明 time 正在进一步用作您的 main 函数中的局部变量,当您尝试访问您导入的全局 time 变量时,这会导致麻烦。您不能同时对局部变量和全局变量使用相同的名称!要么你会得到错误的变量(因为局部变量会影响全局变量),要么如果在分配局部变量之前尝试访问全局变量,则会出现错误。我假设您的代码类似于:

def main():
    t = time(3,0,0,0) # this tries to use the global `time` imported earlier

    # later...
    time = something() # this tries to assign some value to a local `time` variable

解决方案是为本地 time 变量使用不同的名称。

【讨论】:

  • 谢谢!以及促进响应并使其比以前更清晰。感谢编码员的长时间响应和时间
猜你喜欢
  • 1970-01-01
  • 2013-08-12
  • 2010-12-21
  • 2012-02-04
  • 2011-05-18
  • 2019-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多