import 导入模块
我们经常说python有强大的第三方库,有很多常用的功能python提供自带的内置模块。简单的讲模块就是封装了一堆函数的py文件,就像是一个工具包,要使用里面的工具,得先将工具包挪过来。模块也是一样,在程序中需要用模块得先将模块导入。
在python中导入模块使用import关键字。比如我们导入一个时间模块time,获取当前时间。模块导入一般放在文件最前面。
调用模块的方法,格式:模块名.函数名,这样调用可以防止不同模块中有同名方法导致错误。
import 在首次导入模块(一个模块,实际上就是一个py文件)的时候,会发生如下三个步骤:
1、打开模块文件
2、执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
3、在程序中会有一个模块的名称指向模块的名称空间去。
搜索路径
当解释器遇到import关键字,如果模块在当前的搜索路径就会被导入。查看import导入的搜索路径,导入模块时会优先搜索当前目录下是否有这个名字的模块,所以在模块命名的时候不要与系统中的模块有重名。
1、当前目录
2、如果当前目录没有,到环境变量中搜索,可以用sys模块中的path变量查看所有路径。
3、如果都找不到,搜索默认路径,linux系统,默认路径一般为/usr/loacl/lib/python/
第三方模块安装位置,在python安装目录下得lib/site-packages目录下。
举例:
自己创立一个名为time的py文件
此时在另一个文件中导入time模块
所以自己给模块命名的时候不要与系统中的模块有重名。
from……import导入模块的方法
一个模块可能会存在很多函数,如果只想导入其中几个函数,可以使用from xx import xx 方式导入
示例:只想导入time模块中的ctime,time两个方法,可以这样导入。
使用from导入,如果函数名相同,后面导入的会覆盖前面导入的。把模块中所有的函数一次性全部导入:
语法格式:from xxx import *
from…import首次导入发生了三个步骤
1、以模块为准创造一个模块的名称空间
2、执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间。
3、在当前执行文件的名称空间中拿到一个名字,该名字直接指向模块中的某一个名字,意味着可以不用加任何的前缀而直接使用
from…import
优点:不用加前缀,代码更加简洁了
缺点:容易与当前执行文件中名称空间中的名字冲突。
两种方法相同点与不同点
相同:
都会执行模块对应文件,并且都会产生模块的名称空间;在调用功能的时候,两者都需要转到定义时寻找作用域关系。
不同点:
import需要加前缀,而from…import不需要加前缀。
as给模块加别名
有时候导入的模块名称很长,调用的时候很不方便,这时便可以使用as给这个模块取别名。