Python编程用法——Python模块

Python编程用法——Python模块,第1张

Python编程用法——Python模块

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 Modle

Python.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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/3972107.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-21
下一篇 2022-10-21

发表评论

登录后才能评论

评论列表(0条)

保存