Modules,Python Tutorial阅读笔记(3)

  参考资料:

  Python官网Tutorial

  注:由于感觉自己的Python还没有学通透,在看项目的代码时还是有一些困难。所以想看一下Python官网的Tutorial自学一下,我在读的时候也是略过了自己已经会的地方,所以我写的东西都是自己学到的新东西。

  规范:黑体x)表示自己学到的东西模块,是一个大概的区分。4.1,4.2等表示在Tutorial中的位置。

  这一个tutorial的名字叫Modules,之前我转载过一篇文章辨析了module和package的关系。读者可以看这里:https://www.cnblogs.com/chester-cs/articles/13984840.html。所以这篇文章只讲学到的新东西。

  1) 6.1.3 “Compiled” Python files

  为了加速加载模块,Python会在模块所在的目录下缓存complied的module。比如你有一个Hello.py模块,import它之后,当前目录下就会出现一个__pycache__/文件夹,里面会出现一个类似Hello.cpython-38.pyc的文件。

  注意了,这个pyc文件只能加速加载module,并不能加速运行。

  2)6.2. Python在哪里寻找模块?

>>> import sys
>>> sys.path
['', 'D:\\miniconda\\python38.zip', 
'D:\\miniconda\\DLLs', 
'D:\\miniconda\\lib', 'D:\\miniconda', 
'D:\\miniconda\\lib\\site-packages', 
'D:\\miniconda\\lib\\site-packages\\win32', 
'D:\\miniconda\\lib\\site-packages\\win32\\lib',
'D:\\miniconda\\lib\\site-packages\\Pythonwin']

  我们可以使用sys.path来看。这个sys.path其实就是继承了环境变量PYTHONPATH中的值。

  3)假设我们有下面这样的文件结构:

sound/                          Top-level package
      __init__.py               Initialize the sound package
      formats/                  Subpackage for file format conversions
              __init__.py
              wavread.py
              wavwrite.py
              aiffread.py
              aiffwrite.py
              auread.py
              auwrite.py
              ...
      effects/                  Subpackage for sound effects
              __init__.py
              echo.py
              surround.py
              reverse.py
              ...
      filters/                  Subpackage for filters
              __init__.py
              equalizer.py
              vocoder.py
              karaoke.py
              ...

  通过我们已经学到的知识,我们已经知道Python会将哪些看成包,哪些看成module。但是在上面的例子里,假如我们import sound之后,使用sound.filters还是会报错,它会说sound下面没有这个模块,这是为什么呢?

  答案就在__init.py__文件里。

  我们平时import numpy as np,np.array()用的很舒服,但是其实都是软件的设计者在import numpy的时候设计的啦,比如numpy的__init__.py中会有from . import random,如果没有的话是不会加入到Python的symbol space中的。

posted @ 2020-11-23 22:36  思念殇千寻  阅读(177)  评论(0编辑  收藏  举报