python学习之路7

一、模块

  定义:模块就是实现了某个功能的代码集合,一个模块可以定义函数,类和变量。模块还可以包括可运行的代码。本质就是.py结尾的python文件。

  优点:代码重用,可维护性高

  语法:

  导入单一模块:

1 import module_name

  导入多个模块

import module_name1,module_name2,......

  调用符号:

import sys
print(sys.path)

  模块与文件关系:一个.py文件即一个模块,反之亦然。

1 对于一个模块test有如下定义:
2 
3 模块的文件名:test.py
4 模块名:test
5 模块导入:import test

二、模块的名称空间(作用域)

  定义:名称空间就是一个从名称到对象的关系映射,每个模块都定义了自己的名称空间,即每个模块有自己独立的作用域。

  分类:python程序在运行时具有三个名称空间,内建(__builtin__模块),全局,局部,python解释器先加载内建名称空间,后加载全局名称空间,最后加载局部名称空间。

  名称空间与作用域关系:从内往外找,以较内层作用域为准

  例如

  module_a.py

1 x=1
2 
3 def test():
4     print('from the module module_a')

  module_b.py

1 x=2
2 
3 def test():
4     print('from the module module_b')

  test.py

 1 import module_a
 2 import module_b
 3 
 4 print(module_a.x)
 5 print(module_b.x)
 6 print(module_a.x+module_b.x)
 7 module_a.test()
 8 module_b.test()
 9 
10 运行结果:
11 1
12 2
13 3
14 from the module module_a
15 from the module module_b

  例如

  module_a.py

1 x=1
2 
3 def test():
4     print('from the module module_a',x)

  test.py

 1 import module_a
 2 
 3 x=2
 4 print(module_a.x)
 5 module_a.x=10
 6 print(module_a.x)
 7 
 8 #运行结果
 9 1
10 10

三、模块的搜索路径和路径搜索

  模块导入需要经历路径搜索的过程,路径搜索就是在你预定义的搜素路径里查找你想要导入的模块

  如果在预定义路径为找到,抛出异常(pycharm的特殊功能除外)

  自定义模块b在父级目录里(如有特殊需要可以使用sys.path.insert()方法)

  解决方式:将当前文件路径父级目录的父级目录添加到sys.path里

1 import sys,os
2 
3 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
4 
5 import b
6 b.test()

四、from-import语句和as

  from module_name import xxx as xxx_xx

五、包

  定义:包就是一组模块的集合。本质就是一个目录(必须带有一个__init__.py文件)

  包与目录的区别:包必须包含一个空文件(也可以有内容)__init__

六、import原理

  导入模块的本质就是把python文件解释一遍。

  导入包的本质就是执行该包下的__init__.py文件。

猜你喜欢

转载自www.cnblogs.com/breeze-24/p/9484706.html