python语法之模块

1、定义

是一系列功能的结合体,本质上一个个的.py文件,相当于模块包着一堆函数体代码。

 

2、三种来源

2.1、python内置的模块:time , os ,sys, turtle 等

2.2、第三方模块:requests

2.3、自定义模块:自己写的.py文件

 

3、四种表现形式

3.1、使用python编写的文件

3.2、编译后共享的库DLL或C或C++库

3.3、包下面带有__init__一组.py文件

3.4、python解释器下的.py文件-------- python解释器下的文件夹-----------一个个的py文件

ps:包指的是内部包含__init__.py文件夹。

       包的作用:存放模块,包可以更好的管理模块。

 

4、为什么要使用模块

模块可以更好地帮我们管理功能代码,比如函数,变量名...

可以将项目拆分成一个个的功能,分别存放在不用的py文件(模块)中。

 

5、模块的使用

鼠标右键创建py文件,在py文件中编写python代码。

在一个文件中,通过import 关键字导入模块。注意:import 导入模块时,模块名不能.py后缀。

当首次导入模块时,会做三件事:

1 执行源文件代码

2 产生一个新的名称空间用于存放源文件执行过程中产生的名字

3 在当前执行文件所在名称空间中得到一个名字func,改名字指向新创建的模块名称空间,若要引用模块名臣空间中的名字,需要加上该前缀,如下

import os   #导入模块
os.open()   #调用模块os中的open函数

加上os. 作为前缀就相当于说明要引用os名称空间中的名字。

强调:第一次导入模块已经将其加载到内存空间了,之后的重复导入会直接引用内存中已存在的模块,不会重复执行文件。

 

6、import语句导入多个模块

6.1、import语句

import module1
import module2
import module3
#
import module1,module2,module3

不建议第二种方式,第一种更规范,可读性更强。

'''
分类导入:
1. python内置模块 2.第三方模块 3.自定义模块 '''

文件开头导入模块属于全局作用域,在函数体内导入模块属于局部作用域。

 

6.2、from-import语句

from os import open,remove,rename
open()
rename()
remove()
#无前缀的好处是代码更简洁,但是容易与当前名称空间中的名字冲突,
# 如果当前名称空间存在相同名字,后定义的名字会覆盖之前定义的名字。

 

6.3、其他导入语法as

import os as o
o.rename()

 

7、循环导入问题

解决方案1:导入语句放到最后,保证在导入时,所以名字都已经加载过

解决方案2:导入语句放到函数中,只有在调用函数时才会执行其内部代码

 

8、区分py文件的两种用途

一种被当程序/脚本执行,一种被当模块导入。区分方法:每个py文件内置的__name__变量,该变量在py文件中当脚本执行时赋值为__main__,当模块导入时赋值为模块名。

if __name__ == '__main__':
    foo.py被当做脚本执行时运行的代码
else:
    foo.py被当做模块导入时运行的代码

 

 

posted @ 2019-11-15 16:28  小猪皮蛋  阅读(354)  评论(0编辑  收藏  举报