Python不会导入函数

Roh*_*dey 3 python python-import

我有一个简单的time.py文件:

import datetime
import time
import re
def cnvrt1(time):
    hr = int(re.split(":",time)[0])
    min = int(re.split(":",time)[1])
    sec = int(re.split(" ",re.split(':',time)[2])[0])
    ampm = re.split(" ",re.split(':',time)[2])[1][0]
    zone = re.split(" ",re.split(':',time)[2])[2][0]
    if ampm == 'P' && hr < 12 :
        hr = hr + 12
    elif ampm == 'A' && hr == 12 :
        hr = hr - 12;
    dt = datetime.datetime.strptime(year=2013,month=10,day=22,hour=hr,minute=min,second=sec)
    res1 = time.mktime(dt.timetuple())
    if zone =='M':
        res1 = res1 -  3600000;
    if zone =='C' :
            res1 = res1 - 3600000*2;
    if zone == 'E' :
           res1 = res1 - 3600000*3;
    return res1
Run Code Online (Sandbox Code Playgroud)

但是,当我说from time import cnvrt1,它说ImportError: can't import name 'cnvrt1'.谁能指出我可能做错了什么?

Mar*_*ers 11

您使用的是错误的名称.目前已经命名的模块time在标准库中,并且该模块可能已经被你正在使用其他代码进口.您甚至import time在此处发布的代码中使用,否则将创建循环导入.

最好的选择是将此模块重命名为其他内容.

如果您使用的是Python 3并放在time.py包中,则可以将导入限定在当前包中:

from .time import cnvrt1
Run Code Online (Sandbox Code Playgroud)

请注意..这将允许您保留当前名称; 默认情况下,Python 3切换到使用绝对导入,并且time包内的模块不会与全局time模块冲突.

您还在模块中使用了无效的Python语法.Python使用and,而不是&&布尔逻辑:

if ampm == 'P' && hr < 12 :
Run Code Online (Sandbox Code Playgroud)

应该

if ampm == 'P' and hr < 12:
Run Code Online (Sandbox Code Playgroud)