Python自带了一些有用的模块,在安装Python会自动安装,也可以通过pip的形式安装第三方的优秀模块。
自定义包Python中,模块的集合为包
包组成$ ls PyClass/ Pymain.py $ ls PyClass/ EnumClass.py TestClass.py __init__.py
模块为一个文件夹包含的内部Python文件,用__init__.py为该模块的初始化文件
Pymain.py
#模块包含 from PyClass import EnumClass from PyClass import TestClass from PyClass.TestClass import CTest print(EnumClass.__author__) print(TestClass.__author__) #引用模块中的函数 EnumClass.EnumFunc() TestClass.ClassFunc() #引用模块中的类 Test = CTest("Test",5) Test.show()
init.py
#模块包含的文件 __all__ = ["TestClass","EnumClass"]
EnumClass.py
from enum import Enum #模块作者名 __author__ = "Python Enum Modle" def EnumFunc(): enumType = Enum("Python",("ONE", "TWO", "THREE")) #获取枚举值 print(enumType) print(enumType.ONE) print(enumType['TWO']) print(enumType(3)) #模块测试 if __name__=='__main__': EnumFunc()
TestClass.py
#模块作者名 __author__ = "Python Class Modle" class CTest(object): def __init__(self,name = "Python",num = 3): self.__name = name self.num = num def show(self): print("name:",self.__name,"num:",self.num) def ClassFunc(): Test = CTest() Test.show() #模块测试 if __name__== '__main__': ClassFunc()
执行结果
$ python Pymain.py Python Enum Modle Python Class ModlePython.ONE Python.TWO Python.THREE name: Python num: 3 name: Test num: 5
引用包内的所有模块
from PyClass import * EnumClass.EnumFunc()
不建议这种使用方式,无法把握包含的模块名是否冲突
自定义模块引用自定义的Python模块,供其他Python调用。模块的搜索地址一般以当前模块所在的地址搜索,当前地址没有就在系统指定的地址搜索,
系统地址:
import sys print(list(sys.path))
执行结果
['C:\Program Files\Python37\python37.zip', 'C:\Program Files\Python37\DLLs', 'C:\Program Files\Python37\lib', 'C:\Program Files\Python37','C:\Program Files\Python37\lib\site-packages']
若需要将地址添加到系统地址,则
sys.path.append('./PyClass')
添加地址为临时地址,仅在当前执行时有效。
模块格式
Test.py
#模块作者名 __author__ = "Python Test Modle" def Testpy(): print("Test Python") #模块测试 if __name__== '__main__': Testpy()模块引用
Python可以引用具体某个函数或类,也可以引用整个模块
引用包内的具体模块
import Test print(Test.__author__) Test.Testpy()
执行结果
Python Test Modle Test Python查找模块的定义
通过dir函数,查找模块定义的名称以及函数,类等,以list的形式返回。
import Test print(list(dir(Test)))
执行结果
['Testpy', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'sys']以脚本的形式运行模块
当模块包含以下代码时:
if name== ‘main’:
模块便可以以脚本的形式运行,传参保存在sys.argv列表中
Test.py
import sys __author__ = "Python Test Modle" def Testpy(): print("Test Python") for value in sys.argv: print("argv value:",value) if __name__== '__main__': Testpy()
执行结果
$ python Test.py test1 test2 Test Python argv value: Test.py argv value: test1 argv value: test2时间模块
Python的时间模块包括time、日历模块calendar等,使用时需要将模块包含进来
time模块import time,
获取时间信息#获取当前时间戳,1970年1月1日至当前时间的秒数,小数点后面为毫秒 print("Timestamp:",time.time()) #通过时间戳获取对应时间,默认参数为当前时间戳 print("get Time:",time.gmtime(1)) #获取当前时间,默认参数为当前时间戳,若传入时间戳功能与gmtime相同 print("local Time:",time.localtime())
执行结果
Timestamp: 1554037718.1180918 get Time: time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=1, tm_wday=3, tm_yday=1, tm_isdst=0) local Time: time.struct_time(tm_year=2019, tm_mon=3, tm_mday=31, tm_hour=21, tm_min=8, tm_sec=38, tm_wday=6, tm_yday=90, tm_isdst=0)
其中time.gmtime与time.localtime返回的是一个时间元组,可以直接打印,但需要进一步解析时间元组
延时
print("Timestamp:",time.time()) time.sleep(2) #delay 2s print("Timestamp:",time.time()) time.sleep(0.5) #delay 500ms print("Timestamp:",time.time())
执行结果
Timestamp: 1554040162.2223516 Timestamp: 1554040164.2239976 Timestamp: 1554040164.7256548解析时间元组
通过打印可以得出时间元组包含的信息
local Time: time.struct_time(tm_year=2019, tm_mon=3, tm_mday=31, tm_hour=21, tm_min=8, tm_sec=38, tm_wday=6, tm_yday=90, tm_isdst=0)
localTime = time.localtime() print("year:",localTime.tm_year) print("month:",localTime.tm_mon) print("day:",localTime.tm_mday) print("hour:",localTime.tm_hour) print("minute:",localTime.tm_min) print("second:",localTime.tm_sec) #星期 [0~6] 星期一为0 print("week:",localTime.tm_wday) #当前为一年中的第几天 print("year day:",localTime.tm_yday) #是否为夏令时 print("is summer time:",localTime.tm_isdst)
执行结果
year: 2019 month: 3 day: 31 hour: 21 minute: 8 second: 38 week: 6 year day: 90 is summer time: 0获取时间字符串
调用time.strftime函数,传入对应的字符串格式化符号信息
#year print("year info:",time.strftime("year:%Y shorthand:%y")) #month print("month info:",time.strftime("month:%B shorthand:%b num:%m")) #day print("day info:",time.strftime("day:%d")) #week print("week info:",time.strftime("week:%A shorthand:%a num:%w")) #time print("24-hour system:",time.strftime("%H:%M:%S")) print("12-hour system:",time.strftime("%I:%M:%S %p")) #time string 24-hour system default print(time.strftime("%c")) print(time.strftime("%F")) print(time.strftime("%x")) print(time.strftime("%T"))
执行结果
year info: year:2021 shorthand:21 month info: month:May shorthand:May num:05 day info: day:16 week info: week:Sunday shorthand:Sun num:0 24-hour system: 19:54:42 12-hour system: 07:54:42 PM Sun May 16 19:54:42 2021 2021-05-16 05/16/21 19:54:4
字符串格式化符号说明
%Y 年 %y 年份后面两位 %B 月份英文全称 %b 月份英文简写 %m 月份的数字表示 %d 当月的第几天 %A 星期英文全称 %a 星期英文简写 %w 星期的数字表示 [0~6] 星期天为0,与时间元组不同 %H 时(24小时制) %I 时(12小时制) %p AM或PM显示 %M 分 %S 秒通过传参获取时间字符串
def GetTimeStringInput(year, mon, day, hour, min, sec): print("LocalTimeString:", datetime.datetime(year, mon, day, hour, min, sec)) localTime = time.localtime() GetTimeString(localTime.tm_year, localTime.tm_mon, localTime.tm_mday, localTime.tm_hour, localTime.tm_min, localTime.tm_sec)
执行结果
LocalTimeString: 2021-05-16 20:21:36通过秒数获取时间datetime
通过秒数可以获取两个时间字符串,一个是本地时间,自动加了时区,另一个是UTC时间
#通过秒数获取本地时间,加了当前时区 def GetLocalTimeBySecond(second): print("LocalTime:", datetime.datetime.fromtimestamp(second)) #通过秒数获取UTC时间 def GetUTCTimeBySecond(second): print("LocalTime:", datetime.datetime.utcfromtimestamp(second)) GetLocalTimeBySecond(0) GetUTCTimeBySecond(0)
执行结果
LocalTime: 1970-01-01 08:00:00 LocalTime: 1970-01-01 00:00:00日历模块calendar
import calendar
calendar模块设置
#设置日历起始星期,[0~6],星期一为0,默认为星期一 calendar.setfirstweekday(6) print("first week:",calendar.firstweekday()) #判断今年是否为闰年 print(calendar.isleap(time.localtime().tm_year))
执行结果
first week: 6 False获取当月月历
def GetLocalMonth(): #设置日历起始星期,[0~6],星期一为0,默认为星期一 calendar.setfirstweekday(6) print("first week:",calendar.firstweekday()) #输出当月月历 localMonth = calendar.month(time.localtime().tm_year,time.localtime().tm_mon) print(localMonth) print(type(localMonth))
#输出当月月历 localMonth = calendar.month(time.localtime().tm_year,time.localtime().tm_mon) print(localMonth) print(type(localCalendar))
执行结果
def GetLocalYear(): #设置日历起始星期,[0~6],星期一为0,默认为星期一 calendar.setfirstweekday(6) print("first week:",calendar.firstweekday()) #输出今年的年历 localCalendar = calendar.calendar(time.localtime().tm_year) print(localCalendar) print(type(localCalendar))
#输出今年的年历 localCalendar = calendar.calendar(time.localtime().tm_year) print(localCalendar) print(type(localCalendar))
执行结果
thisYear = time.localtime().tm_year print(thisYear, calendar.isleap(thisYear))
执行结果
2021 False
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)