Liam0205 / liam0205.github.io

Deployment of my weblog.
https://liam0205.github.io
35 stars 5 forks source link

Python 中的黑暗角落(三):模块与包 | 始终 #191

Open Liam0205 opened 5 years ago

Liam0205 commented 5 years ago

https://liam.page/2017/07/23/modules-and-packages-of-python/

如果你用过 Python,那么你一定用过 import 关键字加载过各式各样的模块。但你是否熟悉 Python 中的模块与包的概念呢?或者,以下几个问题,你是否有明确的答案? 什么是模块?什么又是包? from matplotlib.ticker import Formatter, FixedLocator 中的 matplotlib 和 ticker 分别是什么?中间的句点是什么意思? fro

ghost commented 5 years ago

关于init.py文件的作用,你说“比如,很可能用户在目录下新建了一个子目录,名为 collections;但 Python 有内建的同名模块。若不加任何限制地,将子目录当做是 Python 包,那么,import collections 就会引入这个 Python 包。而这样的行为,可能不是用户预期的。” 这里说的有问题啊,import的导入顺序是优先导入内置模块,不会导入自定义的collections

Liam0205 commented 4 years ago

关于init.py文件的作用,你说“比如,很可能用户在目录下新建了一个子目录,名为 collections;但 Python 有内建的同名模块。若不加任何限制地,将子目录当做是 Python 包,那么,import collections 就会引入这个 Python 包。而这样的行为,可能不是用户预期的。” 这里说的有问题啊,import的导入顺序是优先导入内置模块,不会导入自定义的collections

你讲的对,这里我写的不对。

inorilzy commented 4 years ago

学习了,感谢。

QIUWEIHAO commented 3 years ago

写的很清楚! 目前讲解的最清楚的一篇。 还是想问一下为什么 import.py 能够防止包重名的问题?另外,能不能通过修改 picture/init.py 让我在程序里写 import picture 然后就可以直接使用 picture.gaussianblur,而不需要用picture.filters.gaussianblur 这样,相当于picture这个命名空间可以直接访问其下的所有子包内的子模块