【笔记】Python包和模块管理

版权声明:逆风的方向更适合飞翔,不怕千万人阻挡,只怕自己投降! 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 *

猜你喜欢

转载自blog.csdn.net/linxubin321/article/details/84036291