python学习日记11 python基本语法(包和模块)

一、包和模块

1.包

​ 包【package】是一种管理 Python 模块命名空间的形式,采用"点模块名称"

​ 就好像使用模块的时候,你不用担心不同模块之间的全局变量相互影响一样,采用点模块名称这种形式也不用担心不同库之间的模块重名的情况

"""
	package本质是一个文件夹【目录】,但是特殊之处在于:该文件夹下有一个文件__init__.py,
	代表初始化,但是前期空的,后期在项目开发中,会在其中书写一些项目的配置信息。

注意:实际上,一个py文件就是一个模块,一个模块名包括包名
如:import aaa.file ,aaa表示包名或者目录名。file是文件名,二者同时组成了一个模块名
"""

2.自定义模块

模块的优点:

  • 提高代码的可维护性
  • 提高了代码的复用度,当一个模块书写完毕,可以被多个地方引用
  • 引用其他的模块
  • 避免函数名和变量名的命名冲突
# 一、import
# 1.import 包1.包2....py文件名
# 方式一:分别导入
import  aaa.module
import  bbb.module
# 方式二:一起导入
import  aaa.module,bbb.module
import math,string,random

# 访问模块中的变量和调用函数
print(aaa.module.num)
print(bbb.module.num)
aaa.module.func()
bbb.module.func()

"""
好处:可以区分不同模块中同名的变量,函数或类
缺点:一个模块中的变量或函数较多,如果都需要访问,每次访问需要声明模块的路径
"""
# 2.import 包1.包2....py文件名  as  别名
import  ccc.d1.text as c1
import  ccc.d2.text as d1

print(c1.c)
print(d1.d)

# 二、from   import

# 1.from  包1.包2....py文件名  import  变量名/函数名/类名
from aaa.module import num,func
from bbb.module import num,func

# def func():
#     print("showing")
# 访问模块中的变量和调用函数,无需声明模块的路径
print(num)
func()

"""
好处:当访问变量或调用函数的时候,无需多次声明模块的路径
缺点:如果当多个模块中出现同名的变量,函数或者类,当访问的时候,则会出现覆盖问题,后导入的会覆盖掉之前导入的
"""

# 2.from  包1.包2....py文件名  import  *:从指定模块中导入所有内容
from ccc.d1.text import *
from ccc.d2.text import *
print(c)
print(d)

3.系统模块

3.1time模块

1>名词解释

UTC,格林威治天文时间,世界标准时间,在中国为UTC+8

DST:夏令时,表示时间的显示格式

2>时间的表示形式

a.时间戳

​ 以整型或浮点型表示的是一个以秒为单位的时间间隔,这个时间的基础值是1970.1.1的零点开始算起

b.时间元组格式

​ 采用Python的数据结构表示,这个元组有9个整型内容,分别表示不同的含义

c.格式化的时间字符串(主要用圈中的几种)

d.时间的三种表示形式之间的相互转化

from time import  *

# 1.time():获取当前时间的时间戳                       ******
t1 = time()
print(t1)

# 2.gmtime():获取当前的UTC,为元组形式
t2 = gmtime()
print(t2)

# 3.localtime():获取当地时间,,为元组形式                ******
t3 = localtime()
print(t3)

# 4.mktime():将时间的元组形式转换为时间戳
t4 = mktime(t3)
print(t4)

# 5.ctime():将时间戳转换为时间的字符串,默认格式
t5 = ctime(t1)
print(t5)    # Sat Aug 14 21:50:39 2021

# 6.asctime()将时间元组形式转换为时间的字符串,默认格式
t6 = asctime(t3)
print(t6)  # Sat Aug 14 21:52:17 2021

# 7.strftime():将时间的元组形式转换为时间的字符串,可以自定义格式      *****
# %Y:year    %m:month    %d:day      %H:hour   %M:minutes    %S:seconds
t7 = strftime("%Y.%m.%d",t3)
print(t7)  # 2021.08.14

t7 = strftime("%Y.%m.%d %H:%M:%S",t3)
print(t7)  # 2021.08.14 21:55:07

t7 = strftime("%Y/%m/%d %H:%M:%S",t3)
print(t7)  # 2021/08/14 21:55:23

# 8.strptime():将时间的字符串形式转换为时间元组形式,也可以理解为解析时间字符串   ******
# 注意:解析时间字符串的时候,一定要注意时间字符串和时间格式之间的完全匹配
# t8 = strptime("2021/08/14 21:55:23","%Y.%m.%d")
# print(t8) # ValueError: time data '2021/08/14 21:55:23' does not match format '%Y.%m.%d'

t8 = strptime("2021/08/14 21:55:23","%Y/%m/%d %H:%M:%S")
print(t8)

# 9.sleep():休眠,让程序进入阻塞状态,指定时间达到之后,会自动解除阻塞,程序会继续向下执行   *****
# 使用场景:使用在进程和线程中较多
print("start")
sleep(5)
print("over")

3.2datetime模块

# datetime模块是在time模块的基础上进行了二次封装

import  datetime

"""
date:日期,包含年月日
time:时间,包含时分秒
datetime:日期和时间,包含年月日时分秒
tzinfo:时区
"""

# 1.获取当前时间          ****
d1 = datetime.datetime.now()
print(d1)    # 2021-08-03 11:46:57.798894
print(type(d1))

# 2.将时间转换为字符串【时间字符串的格式化】
"""
时间的占位符
%Y:年
%m:月
%d:日

%H:时
%M:分
%S:秒

%d:日     %D:月/日/年
%Y:2021    %y:21
%H:时      %h:月的英文
"""
d2 = datetime.datetime.now()
time_str1 = d2.strftime("%Y.%m.%d %H:%M:%S")
print(time_str1)
print(type(time_str1))

# 3.将格式化字符串转换为时间格式
# 注意:进行时间字符串解析的时候,一定要注意格式的匹配
d3 = datetime.datetime.strptime(time_str1,"%Y.%m.%d %H:%M:%S")
print(d3)
print(type(d3))

# 4.两个时间对象之间可以进行减法运算                    *****
date1 = datetime.datetime(2020,10,1,14,15,30,100)
date2 = datetime.datetime(2020,10,3,13,30,31,100)
d4 = date2 - date1
print(d4)
print(d4.days)  # property属性
print(d4.seconds)

3.3calender模块

import  calendar

# 1.判断是否是闰年                 *****
print(calendar.isleap(2020))

# 2.获取指定年指定月的万年历
print(calendar.month(2020,10))

# 3.获取指定年的万年历
print(calendar.calendar(2020))

# 4.获取指定日期的星期,取值范围为:0~6
print(calendar.weekday(2021,8,8))

# 5.获取指定年份之间闰年的个数
print(calendar.leapdays(2000,2021))

print(dir(calendar))

3.4os模块

os模块中包含普通的操作系统功能,提供了非常丰富的方法用来处理文件和目录

# os模块中包含了普通的操作系统功能,提供了非常丰富的用来处理文件或文件夹的功能
import  os

# 一、os模块下的函数
# 1.listdir(path):列出指定路径下所有的内容,包含文件和文件夹,            ********
# 返回一个列表,其中的元素是文件或文件夹的名称
path = r"/Users/yangyang/Desktop/coding14"    # 绝对路径
r1 = os.listdir(path)
print(r1)

# 2.mkdir(path):创建一个目录                                      ******
os.mkdir(r"aaa")                          # 相对路径
# open():创建一个文件
f1 = open(r"a1.txt","w",encoding="utf-8")


# 3.rmdir(path):删除一个目录
os.rmdir(r"aaa")

# 4.remove(path):删除一个文件
os.remove(r"a1.txt")

# 5.rename(old,new):给指定的文件或文件夹重命名
os.rename(r"aaa","bbb")

os.rename(r"a1.txt",'file.txt')


# 二、os.path模块下的函数                       *********
# 1.join(父路径,子路径):拼接路径
path = r"/Users/yangyang/Desktop/coding14"
subpath = r"Day2Code"
# a.+,不推荐使用,原因:python是跨平台的,但是,如果采用+的方式拼接路径,不同操作系统中拼接的方式不同
new_path1 = path + "/" + subpath    # 在windows中,new_path1 = path + "\\" + subpath
print(new_path1)

# b.join()
new_path2 = os.path.join(path,subpath)
print(new_path2)

# 2.split(path):对路径进行分割,结果为一个元组,格式:(父路径,子路径)
r1 = os.path.split(path)
print(r1)

path1 = r"/Users/yangyang/Desktop/coding14/Day2Code/5.输入print.py"
r1 = os.path.split(path1)
print(r1)

# 3.splitext(path):对路径进行分割,结果为一个元组,格式:(父路径,扩展名)
# 如果path是一个文件夹,则结果为(父路径,""),如果path是一个文件,则结果为(父路径,".扩展名")
print(os.path.splitext(path))
print(os.path.splitext(path1))

# 4.isfile(path):判断指定路径是否是文件
print(os.path.isfile(path1))
print(os.path.isfile(path))

# 5.isdir(path):判断指定路径是否是文件夹
print(os.path.isdir(path1))
print(os.path.isdir(path))

# 6.exists(path):判断path是否存在
print(os.path.exists(path))

# 7.getsize(path):获取一个文件的字节大小,常用于文件读写中
print(os.path.getsize(path1))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值