首先说一下:对于一个真实的Python程序,我们自己完成所有的工作是不太现实的,通常都是需要借助第三方类库。而且,咱们编写一个完整的程序的源代码也不可能放在同一个源文件中,对吧,因此这些都需要以模块化的方式来组织项目的源代码。
好了,下面说一下Python相关的模块化编程吧!
首先,导入模块的简单语法需要去进行一下了解的。
下面的要牢记哦,import在Python中是被利用来导入模块的,那就说一下import的用法吧,主要有两种用法哦,分别如下:
- import 模块名1[ as 别名1], 模块名2[ as 别名2], …
注意上面“[ ]”中的是可选项哦,上面语句的意思就是整个模块的导入。
- from 模块名 import 成员名1[ as 别名1], 成员名2[ as 别名2], …
这个语句的意思就是 导入模块中指定的成员。
上面两种import语句的 区别 主要如下:
1. 第一种import语句导入整个模块内的所有成员,这些成员包括变量、函数、类等;而第二种import语句则只导入模块内的指定成员,当然除非你使用from 模块名 import *,但这种方式通常是不推荐使用的。
2. 使用第一种import语句导入模块中的成员时,必须添加模块名或模块别名前缀哦;当使用第二种import语句导入模块中的成员时,就不必使用任何的前缀啦,直接使用成员名或者成员别名就可以啦。
# 举个“栗子”:
#导入整个sys模块
import sys
#导入sys整个模块,并指定其别名s
import sys as s
#导入sys、os两个模块
import sys, os
#导入sys、os两个模块,并为sys指定别名s,为os指定别名o
import sys as s, os as o
#导入sys模块内的argv成员
from sys import argv
#导入sys模块内的argv成员,并为其指定别名v
from sys import argv as v
#导入sys模块内的argv、winver成员
from sys import argv, winver
#导入sys模块内的argv,winver成员,并分别指定别名为v、w
from sys import argv as v, winver as w
#导入sys模块中的所有成员
from sys import
下面再来说一下,为什么使用from 模块名 import 这种导入所有成员的形式不推荐大家使用吧
原因如下,还是举个“栗子”吧!
因为这种方式是有潜在风险的,比如说通过这种形式同时导入module1和module2内的所有成员,如果这两个模块内都有一个ex()函数,那问题就来了,当执行如下代码:ex()
这个同时存在于两个模块中的函数到底是在module1模块中的呢?还是module2模块中的呢?所以说嘛,这种导入方式是有潜在风险的哦!
当然还是有办法来进行规避的,你可以通过下面的方式:
import module1 as m1
import module2 as m2
这样分别给两个模块起个别名就能区分开了,这时再调用ex()函数时,就可以按下面方式写啦:
m1.ex()
m2.ex()
这样就很清晰了哦!
还有没有其他方法呢?当然有啦,你还可以采用下面的方式,就是给模块中的重名方法起个“外号”(别名)呗:
from module1 import ex as ex1
from module2 import ex as ex2
这样就可以直接调用ex()方法啦!
ex1()
ex2()