做完python(一)基本语法的笔记,对python有了一些基础的了解,可以深入的看简明python教程等书籍,进行更多的学习 昨天使用了python版的ssr让我对python的好感又增加了不少
参考
模块&包
模块文件
模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。 其实我们之前写的每个py文件就可以认为是一个模块
- 模块文件语法和正常python文件一样
包
包是一种管理 Python 模块命名空间的形式,采用”点模块名称”。 文件夹下面有文件夹最下面是模块文件,文件夹视为包
每个包下面必须含有__init__.py
文件,即使为空,也可以放置包初始化时的代码,可php的命名空间越来越像了
如
sound/ #包
__init__.py
formats/ #子包
__init__.py
wavread.py #模块
wavwrite.py
effects/
__init__.py
echo.py
surround.py
filters/
__init__.py
equalizer.py
导入&使用模块
- 导入某一模块,文件名不能含有点
.
,点代表子模块或者模块里的某函数/变量,类似于php里的命名空间 - 模块后缀名就是.py,所以导入module.py 导入名写module没有.py,.py代表子模块py
- 执行一次导入操作,则模块就被运行一次,即如果模块内有print()输出,导入时就会输出
导入语法
import导入
导入module1.py,module2.py,module3.py…模块
import module1,module2,module3
导入sound包中effects包中的echo模块,也支持逗号隔开导入多个,*代表所有
import sound.effects.echo #注意没有.py
import导入后使用
使用导入module.py
通过module.变量/函数名
的方式使用模块中的变量/函数
from 模块 import 变量/函数
系统只记录import的内容,不会记得import的内容,例,from 模块 import 变量
,后模块.变量函数
无效
使用时直接用变量/函数名
,不需要module.变量/函数名
from module import 变量/函数名
from sound.effects.module import 变量/函数名
from 包 import 模块
从包中导入模块,使用时任然需要模块.变量/函数
from sound.effects import echo
例如
文件目录
.
|-- fu
| |-- __init__.py
| `-- zi
| |-- __init__.py
| `-- mo.py
`-- import0.py
mo.py
def fun(str):
print(str)
a='hello,word'
import0.py
from fu.zi.mo import fun
fun("import function") #导入模块中的函数,可以直接使用
from fu.zi import mo
mo.fun(mo.a) #导入模块,需要像命名空间一样用点导入
运行import0.py
$ python3 import0.py
import function
hello,word
运行之后目录里在之前的xxx.py的基础上多了xxx.pyc文件,这是缓存每个模块编译后的版本 好像也可以拓展研究,先略
模块的搜索路径
当前工作目录> sys.path(sys模块的path变量)变量中给出的目录列表 包含符号链接的目录不会被加到目录搜索路径中
关于模块的更多内容
便准模块
现在我们已经了解了模块的用法,可以看到,如果定义好了很多模块,我们就不用重复造轮子了,使用成熟的包&模块可以剩很多事情,很多标准模块,数学模块,体现出python的用处来了
dir()
dir(模块)
返回模块内所有的变量,函数名,dir()无参数输出当前解释器/模块的变量/函数名
>>> dir()
['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
这些__xxx___
肯定类似php里的魔术变量
__name__
每个模块都有一个__name__属性,当其值是’main‘时,表明该模块自身在运行,否则是被引入,可以用于模块引入初始化时通过条件语句不运行某段程序
本文首发于我的博客@cndaqiang.
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!