版权声明:逆风的方向更适合飞翔,不怕千万人阻挡,只怕自己投降! https://blog.csdn.net/linxubin321/article/details/84036291
一、模块
module:A module is a file containing Python definitions and statements.
每一个.py结尾的python源代码文件都是一个模块,模块名要符合标识符命名规则。
# 模块别名应符合大驼峰命名法
import 模块名 as 模块别名
# 局部导入
form 模块名 import 工具名
搜索顺序:
Python解释器按照sys.path列表中的目录顺序来查找导入文件,当前目录–环境变量–标准库–扩展库。
Python中每一个模块都有一个内置属性__file__可以查看模块的完整路径。
在导入文件时,文件中没有任何缩进的代码都会被执行一遍。
_name_ 被其他文件导入就是模块名,当前执行程序时__main__。
导入原理:
1、当.py文件第一次被导入时,它会被汇编为字节代码,并将字节码写入同名的.pyc文件。
2、import 语句可以在程序的任何位置使用,你可以在程序中多次导入同一个模块,但模块中的代码仅仅在该模块被首次导入时执行。
3、后面的import语句只是简单的创建一个到模块名字空间的引用。
二、包
Package:多个相关联的模块组成一个包,以便于维护和使用
1、目录下含有特殊文件__init__.py(Python 3.3以上可不含该文件)
包
2、包 是一个包含多个模块的特殊目录
3、命名方式 小写字幕+_
要在外界使用包的模块:
在导入一个包时,实际上是导入了它的__init__.py文件
import 需要在__init__.py指定对外提供的模块列表
├─myname
│ │ name.py age.py
│ │ __init__.py
# init.py
from . import name
# test.py
# import 包名 一次性导入包中所有的模块
# 这里访问__init__.py文件中的引用文件,需要加上包名
import myname
myname.name.tett()
# 在init不做任何添加 按上述访问则会报错
用from语句可以把模块直接导入当前命名空间
# test.py
from myname import name
name.tett()
# 当用from package import *,导入的模块可以由__all__控制
# init.py
__all__ = [name,age]
# test
from myname import *