python学习基础第一阶段day14

模块

定义
		包含一系列数据、函数、类的文件,通常以.py结尾。
作用
		让一些相关的数据,函数,类有逻辑的组织在一起,使逻辑结构更加清晰。
		有利于多人合作开发。

导入

import 
 1. 语法: 
import 模块名
import 模块名 as 别名
	2. 作用:将某模块整体导入到当前模块中
	3. 使用:模块名.成员
from import 
	 1. 语法:
from 模块名 import 成员名[ as 别名1]
	2. 作用:将模块内的一个或多个成员导入到当前模块的作用域中。
	3. 使用:直接使用成员名
from import * 
	1. 语法:from 模块名 import *
	2. 作用:将某模块的所有成员导入到当前模块。
	3. 模块中以下划线(_)开头的属性,不会被导入,通常称这些成员为隐藏成员。

# 导入方式1
# 语法:import 模块名称
# 使用:模块名称.成员
# 更适合面向过程的技术(函数、全局变量)
# 本质:通过变量访问其他模块成员
import module01

module01.func01()

# import module01 as m

# m.func01()

# 方式2
# 语法:from 模块名称 import 成员
# 用法:直接使用成员
# 更适合面向对象的技术(类)
# 本质:将其他模块成员导入到当前模块作用域中
from module01 import MyClass

my_class = MyClass()
my_class.func02()

# 方式3
**# 语法:from 模块名称 import ***
# 用法:直接使用模块内所有成员
# 需要访问模块中多个成员
# (小心:名称冲突)
# 本质:将其他模块成员导入到当前模块作用域中
from module01 import *

MyClass02().func03()

func01()

模块变量

__all__变量:定义可导出成员,仅对from xx import *语句有效。
__doc__变量:文档字符串。
__file__变量:模块对应的文件路径名。
__name__变量:模块自身名字,可以判断是否为主模块。
当此模块作为主模块(第一个运行的模块)运行时,__name__绑定'__main__',不是主模块,而是被其它模块导入时,存储模块名。

加载过程

在模块导入时,模块的所有语句会执行。
如果一个模块已经导入,则再次导入时不会重新执行模块内的语句。

分类

1. 内置模块(builtins),在解析器的内部可以直接使用。
2. 标准库模块,安装Python时已安装且可直接使用。
3. 第三方模块(通常为开源),需要自己安装。
4. 用户自己编写的模块(可以作为其他人的第三方模块)

包package

	python 程序结构
	项目根目录
	包
  	  模块
       	 类
            	函数
               	 语句
导入是否成功的唯一条件:
    导入路径 + sys.path == 真实路径

定义
将模块以文件夹的形式进行分组管理。
作用
让一些相关的模块组织在一起,使逻辑结构更加清晰。
导入
import  包名.模块名 [as 模块新名]
import  包名.子包名.模块名 [as 模块新名]

from 包名 import 模块名 [as 模块新名]
from 包名.子包名 import 模块名 [as 模块新名]
from 包名.子包名.模块名 import 成员名 [as 属性新名]

# 导入包内的所有子包和模块
from 包名 import *
from 包名.模块名 import *

init.py 文件

是包内必须存在的文件
会在包加载时被自动调用

all

记录from 包 import * 语句需要导入的模块
案例:
	1. 根据下列结构,创建包与模块。
my_ project /
main.py
common/
__init__.py
list_helper.py
skill_system/
    __init__.py
    skill_deployer.py
      skill_manager.py
2. 在main.py中调用skill_manager.py中实例方法。
3. 在skill_manager.py中调用skill_deployer.py中实例方法。
4. 在skill_deployer.py中调用list_helper.py中类方法。

搜索顺序

内置模块
sys.path 提供的路径

标准库模块

   	 time
import time
# 获取当前时间戳 1970年1月1日 到现在 经过的秒数
print(time.time())# 1579161897.7612894
# 获取当前时间元组(年,月,日,时,分,秒,星期,这年的第几天,与夏令时的偏移量)
print(time.localtime())

# 时间戳 --> 时间元组
time_tuple = time.localtime(1579161897.7612894)
# 时间元组 -->时间戳
print(time.mktime(time_tuple))

# 时间元组 --- > str
# 20/01/16 16:04:57
print(time.strftime("%y/%m/%d %H:%M:%S",time_tuple))
# 2020/01/16 16:04:57
print(time.strftime("%Y/%m/%d %H:%M:%S",time_tuple))

#  str--- > 时间元组
new_time_tuple = time.strptime("2020/01/16 16:04:57","%Y/%m/%d %H:%M:%S")
print(new_time_tuple)
# 定义函数,根据生日(年月日)计算活了多少天。
# 公式:当前时间 - 生日
import time


def life_days(year, month, day):
    str_time = "%d-%d-%d" % (year, month, day)
    time_tuple = time.strptime(str_time, "%Y-%m-%d")
    life_seconds = time.time() - time.mktime(time_tuple)
    return int(life_seconds / 60 / 60 / 24)


print(life_days(1996, 4, 15))

发布了13 篇原创文章 · 获赞 2 · 访问量 325

猜你喜欢

转载自blog.csdn.net/ali_ali123/article/details/104060286