day25 包语法

1. 包
就是一个文件夹. py2中包内必须要有一个__init__.py文件, 在python3中可以省略,但是最好都保留.
  __init__.py 当我们导入一个包的时候,默认执行这个包内的__init__.py
if 条件:
语句块
一条语句 > 语句块 > 代码块(函数,类) > py文件(模块) > 包
  注意: 使用 from xxx import xxx 这种形式, import 后面不可以出现"点"
  导入包的执行过程:
1. 判断该文件夹是否已经被导入。
2. 如果没有被导入。开辟内存
3. 在该内存中运行包的__init__.py文件。
4. 给这个内存设置一个名字(包名)

2. 相对导入和绝对导入
相对导入: 相对于当前模块所在的包. 大坑: 使用的时候必须在包外面启动
  from . import xxx 当前文件夹引入模块
  from .. import xxx  引入上一层文件夹的模块
# 注意: Python不允许你运行的程序导包的时候超过当前包的范围(相对路径)

绝对导入: 根据包的根目录去导入内容


  
全部都依赖于 sys.path
  添加路径方式: sys.path.append('添加的路径')


3. 使用包要注意的东西

尽量在包的外面启动程序.


#创建一些包
import os
os.makedirs('glance/api')
os.makedirs('glance/cmd')
os.makedirs('glance/db')
l = []
l.append(open('glance/__init__.py','w'))
l.append(open('glance/api/__init__.py','w'))
l.append(open('glance/api/policy.py','w'))
l.append(open('glance/api/versions.py','w'))
l.append(open('glance/cmd/__init__.py','w'))
l.append(open('glance/cmd/manage.py','w'))
l.append(open('glance/db/__init__.py','w'))
l.append(open('glance/db/models.py','w'))
map(lambda f:f.close() ,l)  # 一次性全部关闭文件句柄
原文地址:https://www.cnblogs.com/Knight-huang/p/9996537.html