--------------------聪明人看得懂,精明人看得准,高明人看得远。智者的声音是愚者的方向,无法放弃过去的无知,就无法走进智慧的殿堂。偏见比无知更可怕!

# # ------------------------------------------------------------------------------------------------------------#
day 21

今日主要内容
1. 包
包就是一个文件夹. py2中包内必须要有一个__init__.py文件, 在python3中可以省略,但是最好都保留.
__init__.py 当我们导入一个包的时候,默认执行这个包内的__init__.py
if 条件:
语句块
一条语句 > 语句块 > 代码块(函数,类) > py文件(模块) > 包
2. 相对导入和绝对导入
相对导入: 相对于当前模块所在的包. 使用的时候必须在包外面启动
绝对导入: 根据包的根目录去导入内容

全部都依赖于 sys.path

3. 使用包要注意的东西

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

# import sys
# print(sys.path)

# import glance.api.policy
# glance.api.policy.get()

# 在import前面可以出现. 在import后面补允许出现.
# from glance.api import policy
# policy.get()
#
#
# from urllib.request import urlopen
# from urllib import request
# request.urlopen()

# 导入一个包的时候, 实际上是导入该包下的__init__.py
# import glance
# print(glance.name)
# glance.chi()
# c = glance.Car()
# c.run()
# glance.api.policy.get()

# import sys
# print(sys.path)
#
# import glance #__init__.py

# from glance.api import policy
# # policy.get()

# sys.path 随动. 随着启动文件. 启动文件所在的文件夹就是你的path里的第一个

# import glance.api.policy
# glance.api.plicy.get()

# from glance import api.policy
# policy.get()

import glance # 导入的包实际上是__init__.py
import master



# # --------------*******--------------
'''
导入包的执行过程:
1. 判断该文件夹是否已经被导入。
2. 如果没有被导入。开辟内存
3. 在该内存中运行包的__init__.py文件。
4. 给这个内存设置一个名字(包名)
'''
# import sylar


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/dealdwong2018/p/10004389.html