59.语法基础-包

包的结构

  • 包文件夹
    1. __init__.py文件
    2. 模块1
    3. 模块2
    4. 子包:
      1. __init__.py
      2. 模块1
      3. 模块2
  • 有时候自己写的包文件是以数字开头,而python不能以数字开头
    • 解决办法:借助第三方包 importlib包,中的import_module()方法来实现
import importlib
a = importlib.import_module("01")

模块的搜索路径和存储

  • 路径的查询
import sys
for i in sys.path:
    print(i)
#路径的添加
#sys.path.append()向路径列表中添加新路径

包的导入

  • 以下都是导入包中的__init__.py中的内容,其他模块需单独导入
    • import package
    • import package as X
    • from package import*
  • 若想上面方法导入其它模块,init.py文件中需使用__all__
    • __all__修饰后,只会载入__all__中内容,不会载入其他__init__中内容
    • __all__ = ["module1", "module2", "module3", "package1",...]

常用包

calendar--日历相关模块

  • calendar.calendar(year,w=0, l=0, c=0)返回指定年份的日历
  • calendar.prcal()同上
    • w-日期间的间隔字符数量
    • l-每周所占的行数
    • c-每个月之间间隔的字符数
import calendar
print(calendar.calendar(2020, w=0, l=0, c=0))
  • calendar.isleap(year)判断某年是不是闰年
print(calendar.isleap(2020))
  • calendar.leapdays(year,year)指定年份到指定年份间,有几个闰年
print(calendar.leapdays(1900,2020))
  • calendar.month(year, month)返回指定月份的日历
  • calendar.prmonth() 同上
print(calendar.month(2020, 1))
  • calendar.monthrange(year, month)返回指定月是周几开始的和有几天的元组,周一从0开始
w, l = calendar.monthrange(2020, 6)
print(w)
print(l)
  • calendar.monthcalendar(year, month)返回指定月份的列表矩阵(列表的嵌套)
print(calendar.monthcalendar(2020, 1))
  • calendar.weekday(year, month, day) 返回指定日期是周几
print(calendar.weekday(2020, 1, 1))

time--时间相关模块

  • 时间戳:一个时间表示,根据编程语言不同,可能是整数,可能是小数从1970年1月1日0时0分0秒,到现在所经历的秒数32位系统支持到2038年,64位系统支持到
  • UTC时间:格林威治时间
  • 夏令时:国外会有规定的时间对标
  • 时间元组:python中一个包含时间元素的普通元组
  • 时间元组的元素
    • 0: 4位数年 2008
    • 1: 月 1 到 12
    • 2: 日 1到31
    • 3: 小时 0到23
    • 4: 分钟 0到59
    • 5: 秒 0到61 (60或61 是闰秒)
    • 6: 一周的第几日 0到6 (0是周一)
    • 7: 一年的第几日 1到366 (儒略历)
    • 8: 夏令时 -1, 0, 1, -1是决定是否为夏令时的旗帜
  • timezone当前时区和UTC时间相差的秒数(无夏令时)
import time
print(time.timezone)
  • altzone当前时区和UTC时间相差的秒数(有夏令时)
print(time.altzone)
  • daylight判断当前是否是夏令时,0表示是
print(time.daylight)
  • time.time()得到一个时间戳
print(time.time())
  • time.localtime()返回一个当前的时间元组
print(time.localtime())
print(time.localtime()[0])
t = time.localtime()
print(t.tm_year)
  • asctime() 把时间元组字符串化
print(time.asctime(time.localtime()))
  • ctime()把时间元组字符串化,可以直接用
print(time.ctime())
  • time.mktime()通过时间元组获取时间戳(截取了浮点数的整数部分)
print(time.mktime(time.localtime()))
  • time.clock()获取CPU时间(但是3.3版本后就不好用了,建议不要用了)
pass
  • time.sleep()使程序进入休眠,N秒后继续
for i in range(10):
    print(i)
    time.sleep(0.01)
  • time.strftime()将时间元组转化为自定义的字符串格式
  • python中时间日期格式化符号

    符号 描述
    %y 两位数的年份表示(00-99)
    %Y 四位数的年份表示(000-9999)
    %m 月份(01-12)
    %d 月内中的一天(0-31)
    %H 24小时制小时数(0-23)
    %I 12小时制小时数(01-12)
    %M 分钟数(00=59)
    %S 秒(00-59)
    %a 本地简化星期名称
    %A 本地完整星期名称
    %b 本地简化的月份名称
    %B 本地完整的月份名称
    %c 本地相应的日期表示和时间表示
    %j 年内的一天(001-366)
    %p 本地A.M.或P.M.的等价符
    %U 一年中的星期数(00-53)星期天为星期的开始
    %w 星期(0-6),星期天为星期的开始
    %W 一年中的星期数(00-53)星期一为星期的开始
    %x 本地相应的日期表示
    %X 本地相应的时间表示
    %Z 当前时区的名称
    %% %号本身
t = time.localtime()
tt = time.strftime("%Y年%m月%d日 %H:%M:%S", t)
print(tt)

datetime--日期相关模块

  • 提供时间和日期的运算表示

  • datetime.date(year, month, day)构造一个日期

import datetime
t = datetime.date(2020, 10, 1)
print(t)
print(t.day)
print(t.month)
print(t.year)
  • datetime.time(hour, minute, second)构造一个时间
t = datetime.time(23, 48, 50)
print(t)
print(t.second)
print(t.minute)
print(t.hour)
  • datetime包中的datetime模块 提供时间和日期的组合
from datetime import datetime
print(datetime.today())  #获取本地的日期时间
print(datetime.now())  #同上,但是接受一个时区参数,如果没有同上
print(datetime.utcnow())  #格林威治时间
print(datetime.fromtimestamp(time.time()))  #从一个时间戳得到时间
  • datetime.timedelta() 获取一个时间间隔
from datetime import datetime, timedelta
t1 = datetime.now()
t2 = timedelta(hours = 1)
print(t1 + t2)

timeit时间测量工具包

  • timeit(stme="",setup="", number=x)
  • 测试两段代码的运行时间
    • stmt要运行的代码,以字符串的形式给入,或者是一个函数
    • setup需要的一些环境变量
    • number循环次数
import timeit

c1 = """
sum = []
for i in range(a):
    sum.append(i)
    """
c2 = "[i for i in range(10000)]"
print(timeit.timeit(stmt=c1, setup="a=10000", number=1))
print(timeit.timeit(stmt=c2, setup="pass", number=1))

def doIt():
    n = 4
    for i in range(n):
        print("数字{}".format(i))
print(timeit.timeit(stmt=doIt, setup="pass", number=1))

os操作系统相关包

  • os.getcwd()返回字符串,获取当前工作目录的绝对路径
import os
print(os.getcwd())
  • os.chdir("新路径")改变当前的工作目录
os.chdir("C:\\Users\\tk\Desktop\\1")
print(os.getcwd())
  • os.listdir()返回一个列表,获取一个文件夹中的所有子目录和文件目录
print(os.listdir("C:\\Users\\tk\Desktop\\1"))
  • os.makedirs("文件夹名字")在工作目录创建一个新文件夹
pass
  • os.system("系统命令符") 运行系统shell命令
    • 返回值为0表hi执行成功,1为失败
    • 一般推荐使用"subprocess"模块代替
print(os.system("ls"))
  • os.getenv("环境变量名称")返回字符串,获取指定的系统环境变量值
print(os.getenv("PATH"))
  • os.putenv("环境变量名称","内容")添加一个环境变量
pass
  • os.exit() 退出系统
pass
  • os.cirdir 返回当前目录
print(os.curdir)
  • os.pardir 返回父目录
print(os.pardir)
  • os.sep 返回当前系统的路径分隔符
print(os.sep)
  • os.linesep 返回当前系统的行终止符
print(os.linesep)
  • os.name 返回当前系统名
print(os.name)

os.path 模块

  • os.path.abspath 将给的路径转化为绝对路径
import os.path
print(os.path.abspath(".")) #"."为当前路径
  • os.path.basename("路径") 获得路径中的文件名部分
print(os.path.basename("C:\\Users\\tk\Desktop\\1"))
  • os.path.join("路径1","路径2","路径3", ...) 拼合适合当前系统文件路径
print(os.path.join("{}".format(os.getcwd()), "1"))
  • os.path.split("路径") 将路径分割为文件夹部分和文件部分,返回一个元组
print(os.path.split("C:\\Users\\tk\Desktop\\1"))
  • os.isdir("路径") 判断路径是否是目录
print(os.path.isdir("C:\\Users\\tk\Desktop\\1\\P00_Test"))
  • os.path.exists("路径") 判断“文件”或“目录”是否存在
print(os.path.exists("C:\\Users\\tk\Desktop\\1"))

shutil 文件的相关操作模块

  • shutil.copy("文件路径", "目标路径") 复制文件
    • 返回值为目标路径
    • 赋值的同时可以重命名,在目标路径加新文件名
  • shutil.copy2("文件路径", "目标路径") 复制文件 同时保留文件的属性(创建时间等)
  • shutil.copyfile("文件路径", "目标路径") 复制一个文件的内容到另一个文件中
    • 返回目标文件路径
  • shutil.move("文件目录", "目标目录") 移动文件
    • 返回目标路径
  • shutil.make_archive("归档后的目录和文件名","后缀","需要归档的文件夹") 文件归档操作
    • 返回归档后的路径
    • 后缀只支持几种:zip,rar等。
  • shutil.unpack_archive("归档文件路径","解包之后的地址") 文件解档操作
    • 返回解包后的路径

zipfile 压缩包

  • zipfile.ZipFile("归档文件的路径") 用于实例化一个压缩文件,类似于a=Tk()
zf = zipfile.ZipFile("归档文件的路径")
  • 实例.getinfo("文件名") 获得压缩包内指定文件的文件属性,如创建时间等
print(zf.getinfo("文件名"))
  • 实例.namelist("归档文件的路径") 获取归档文件内的所有文件列表
print(zf.namelist("归档文件的路径"))
  • 实例.extractall("解档的路径") 解档文件
zf.extractall("解档的路径")

random 随机数包

  • random.random() 产生一个0-1之间的随机小数
import random
print(random.random())
  • random.uniform(a,b) 在a,b数间,可以是整数也可以是浮点数,产生一个随机的浮点数
print(random.uniform(1.5,10.5))
  • random.randint(a,b) 在a,b数间,可以是整数也可以是浮点数,产生一个随机的整数
print(random.randint(2,5))
  • random.randrange(a,b,c) 在a,b数间以c为间隔,产生一个随机整数
print(random.randrange(1,9,2))
  • random.chioce(sequence) 在一个序列中随机选择一个数
l = [1,4,5,7,9,12]
print(random.choice(l))
  • random.shuffle(sequence) 将一个列表内的元素打乱,无返回值,打乱元列表
random.shuffle(l)
print(l)
  • random.samlpe(sequence,x) 从一个序列中,随机产生一个指定个数列表,不打乱元序列
tu = (2,3,4,8,7)
st = "python is ok"
print(random.sample(l, 2))
print(random.sample(tu, 2))
print(random.sample(st, 2))
  • 三角分布的随机数 random.triangular(low, high, mode)
  • 高斯分布的随机数(稍快) random.gauss(mu, sigma)
  • beta β分布的随机数 random.betavariate(alpha, beta)
  • 指数分布的随机数 random.expovariate(lambd)
  • 伽马分布的随机数 random.gammavariate(alpha, beta)
  • 对数正态分布的随机数 random.lognormvariate(mu, sigma)
  • 正态分布的随机数 random.normalvariate(mu, sigma)
  • 冯米塞斯分布的随机数 random.vonmisesvariate(mu, kappa)
  • 帕累托分布的随机数 random.paretovariate(alpha)
  • 韦伯分布的随机数 random.weibullvariate(alpha, beta)

math 处理数学相关运算包

  • 定义了两个常数,e自然常数 和 pi圆周率
import math
print(math.e)
print(math.pi)
  • math.ceil(x) 浮点数向上取整
  • math.floor(x) 浮点数向下取整
  • math.pow(x,y) 指数函数,X的Y次方
  • math.log(x,base) 指数函数,默认以e为底数,base可以指定底数
  • math.sqrt(x) 开平方
  • 三角函数,弧度角度互换,双曲函数 等。

collections模块

namedtuple模块

  • 给一组tuple数据命名,方便阅读
from collections import namedtuple
Point = namedtuple("Point", ["x", "y", "z"])
p = Point(2, 3, 4)
print(p[0])
print(p.y)

deque模块

  • 解决频繁的在list中插入和删除元素的效率问题
from collections import deque
l = [1,2,3,4,5]
a = deque(l)
a.append("b")
print(a)
a.appendleft("v")
print(a)

defaultdict()方法

  • 调用指定字典时,如果没有key正常时报错,如果用此模块,就返回指定函数
from collections import defaultdict

d = defaultdict(lambda:"None")
d["a"] = 1
d["b"] = 2
print(d["a"])
print(d["g"])

Counter模块统计一个字符串出现的频率

from collections import Counter

print(Counter("abbcccddddeeeeeffffff"))
print(Counter(["sere", "lro", "mdmd"]))

猜你喜欢

转载自www.cnblogs.com/TK-tank/p/12346428.html