python基础之 026 包以及包的引入

内容梗概:
1. from xxx import xxx知识点补充
2. 包

1. 知识点补充.
我们现在知道可以使⽤用import和from xxx import xxx来导入一个模块中的内容.那有⼀种特殊的写法: from xxx import *
我们说此时是把模块中的所有内容都导入. 注意, 如果模块中没有写出__all__ 则默认所有内容都导入.
如果写了__all__ 此时导入的内容就是在__all__列表中列出来的所有名字.
实例1
#haha.py
__all__ = ["money", "chi"]
money = 100
def chi():
print("我是吃")
def he():
print("我是呵呵")
# test.py
from haha import *
chi()
print(money)
he() # 报错



2. 包
包是一种通过 '.模块名'来组织python模块名称空间的方式.我们创建的每个⽂文件夹都可以被称之为包.
但是我们要注意, 在python2中规定. 包内必须存在__init__.py⽂文件. 创建包的⽬目的不是为了运行, 而是被导入使用.
包只是一种形式⽽而已. 包的本质就是⼀种模块
为何要使用包? 包的本质就是一个文件夹, 那么文件夹唯一的功能就是将文件组织起来,随着功能越写越多,
我们无法将所有功能都放在一个文件中, 于是我们使用模块去组织功能,随着模块越来越多, 我们就需要用文件夹将模块文件组织起来,
以此来提高程序的结构性和可维护性

注意点:
1.包⾥的__init__.py是什么鬼?其实.不论我们使⽤用哪种方式导入⼀个包,只要是第一次导入包或者是包的任何其他部分
,都会先执行__init__.py文件.这个文件可以是空的.但也可以存放一些初始化的代码. (随意在glance中的__init__.py都可以进行测试)

2.绝对导入和相对导入,
我们的最顶级包glance是写给别人用的.然后再glance包内部也会有彼此之间互相导入的需求,这时候就有绝对导入和相对导入两种方式了.
1. 绝对导入: 以glance作为起始
2. 相对导入: ⽤用. 或者..作为起始
3.关于包相关的导入语句句也分为import和from xxx import xxx两种, 但无论使用哪种,无论在什么位置,
在导入时都必须遵循⼀一个原则: 凡是在导入时d带点的. 左边都必须是一个包.否则报错.可以带一连串串的点.比如a.b.c


tips:关于相对导入和绝对导入的一些具体注意事项:
1.你启动程序的位置决定了你的包的范围的大小
2.要在包外部调用,相对导入的话在自身py文件中调用会报错不让调用.
而绝对导入的话,因为你在包内部调用,他的范围就变小了,一些其他的永远无法调用
3.相对导入在使用时只需观察想调用的包和本身包所在的位置关系即可. .表示在自己本层 , ..表示在上一层
详细可参考:
https://blog.csdn.net/qq_36829091/article/details/79841932
原文地址:https://www.cnblogs.com/Mixtea/p/9991186.html