python模块与import语句

为什么要提出“模块”的概念

我们可以在python解释器中编程,但是,如果我们从python解释器退出再进入,那么之前定义的所有方法和变量就都消失了。
为此,python提供了一个办法,把这些定义存放在文件中,这个文件被称为模块。

什么是模块

模块是一个包含所有我们定义的函数和变量的文件,其后缀名是.py

模块有什么作用

模块可以被别的程序引入,以使用该模块中的函数等功能

如何引入.py模块

import语句

想使用python源文件,只需要在另一个源文件里执行import语句。语法如下:

  • 导入一个模块

import module1

  • 导入多个模块

import module1, module2, ... moduleN

from...import 语句

从模块中导入某一指定部分(如函数、变量)到命名空间中。语法如下:
from moudle import item
注意:item可以是变量或函数

from...import * 语句

将一个模块的全部内容导入到命名空间中。易导致程序可读性不高,不推荐过多使用。语法如下:
import module import *

包是一种管理python模块的形式,类似路径。
层级结构为:包-(子包)-模块
使用模块,采用“点模块名称”形式。
语法如下:

A.B #这表示一个包A中的子模块B: A/B.py
A.B.C #这表示包A中的子包B的模块C: A/B/C.py

注意:除了C都必须是包,C可以是包或模块,但不可以是类、函数或变量!

模块内置属性:__name__属性

__name__是每一个模块的内置属性,指示模块应该如何被加载:
如果模块是被导入,其值是模块名字;如果模块是直接执行,其值是__main__

程序入口

学过其他编程语言的都知道,程序都需要一个入口。像C、C++都需要一个main函数作为程序的入口;Java等则需要一个包含main方法的主类来作为程序入口。
但是python是没有统一的程序入口的。因为python是脚本语言,每次运行都是从脚本的第一行开始运行,没有统一的入口。

参考:https://blog.konghy.cn/2017/0...

结合__name__属性的作用,if __name__==__main__:的含义与作用如下:

  • 只有当前模块自身运行时,if语句体才会被执行;
  • 由于一个模块被另一个程序第一次引入时,其主程序将全部运行。添加这样的if语句后,就实现了在该模块被引入时,模块中某一程序块不执行,而只有该模块自身运行时执行的目的
  • 相当于python模拟的程序入口

常用模块:python标准模块

sys.py模块
查看python版本
import sys
sys.version
查看python模块搜索路径的列表
import sys
sys.path
修改命令提示符
import sys
sys.ps1 #查看主提示符
sys.ps2 #查看副提示符
sys.ps1 = 'in:' # 修改提示符

小结

  • 导入模块的方法:import语句、from...import语句以及使用包导入模块
  • import A.B.C,除了C,A和B都必须是包,C只能是包或模块,不能是函数或变量。因此,import的只能是模块或包,要想导入函数或者变量,只能使用from ... import item语句
  • 模块内置属性__name__, 指示了模块加载的方式,可以用来使得“在引入模块时模块中某一段程序不被执行,而只在模块自身执行时被执行”

jingle901
1 声望0 粉丝