Step 1. Python 项目的组织结构
包--模块--类--函数 变量
Step 2.命名空间
说明:如果两个包有同名的模块需要如何区分呢,假设adyu 目录下有b4.py, poy目录下也有个b4.py,那么在区分这个两个包的模块时,需在模块名前加包名:
adyu.b4
poy.b4
Step 3.如何让一个文件成为一个包
那么需要在这个文件的文件夹有个特定的文件,那就是__init__.py(是两个下划线),__init__.py 这个特别的文件也是一个模块.可在这个文件写入代码,也可以什么都不写.
对于__init__.py这个特殊的文件,它名字叫什么呢,假设这个__init__.py文件在poy目录下,那么__init__.py 的名字就叫poy.
Step 4.如何导入模块
1.在c8.py 定义一个
$ vim c8.py
# 定义变量
a = 2
2.c9.py 引用c8.py 模块 & 变量
$ vim c9.py
import t.c8
print(t.c8) //这里只是引用c8.py模块
$ vim c9.py
import t.c8
print(5.c8.a) //引用模块 & 变量
说明:t.c8 5是c8.py所在的文件路径
3.from module import
说明:这种方式是直接导入变量,所以在print 的时候不需要写路径,可以简化.
$ vim c9.py
from t.c8 import a
print(a)
#执行结果
$ python2.7 c9.py
2
Step 5.如何导入多个变量(1)
1.在c8.py定义多个变量
$ vim c8.py
a = 2
b = 6
c = 7
d = 10
2.代码
说明:在需要匹配多个变量时,可以使用 '*', 但不建议过多使用.
$ vim c9.py
from t.c8 import *
print(a)
print(b)
print(c)
print(d)
3.执行结果
$ python2.7 c9.py
2
6
7
10
Step 6.如何导入多个变量(2)
1.有时候可能会需要导入a变量和b变量,c变量不需要导入,那么需要在c8.py定义 __all__
2.包的这种机制,是非常有用的,在一些真实的项目里面,经常会在__init__.py文件去做包或模块的初始化的工作
$ vim c8.py
__all__ = ['a','b']
a = 2
b = 6
c = 7
d = 10
2.执行结果
$ python2.7 c9.py
2
6
Traceback (most recent call last):
File "c9.py", line 6, in
print(c)
NameError: name 'c' is not defined
说明:可见打印出了a和b 变量值;c 变量提示没有被定义