cndaqiang Web Linux DFT

python(二)包模块

2017-09-29
cndaqiang
RSS

做完python(一)基本语法的笔记,对python有了一些基础的了解,可以深入的看简明python教程等书籍,进行更多的学习 昨天使用了python版的ssr让我对python的好感又增加了不少

参考

简明python教程

Python 基础教程-菜鸟教程

Python3教程-菜鸟教程

Python3.2 — Print函数用法

Python tutorial

模块&包

模块文件

模块是一个包含所有你定义的函数和变量的文件,其后缀名是.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 协议 ,转载请注明出处!


下一篇 python(三)对象


评论


广告

目录

广告
访客数据