python模块

一、模块的定义

Python模块(Module)是一个以“.py ”结尾的Python 文件,可以定义函数,类和变量

模块的作用:快速的实现某种功能

可以理解为:使用频率高的代码块封装在模块中,使用的时候导入模块即可调用,方便高效。

比如实现和时间相关的功能就可以使用time模块,我们可以认为一个模块就是一个工具包,每一个工具包中都有各种不同的工具供我们使用,进而实现各种不同的功能。

我们为什么要使用模块呢?

以我们经常调用的函数为例,我们在使用一个功能比较复杂的函数时,当我们仅仅调用它,可能只需要一行代码,但是定义这个函数的代码可能需要几百行甚至更多。按照每次都先定义后使用的方式,如果一个大项目的多个python文件都要用到这个函数,那这段函数的定义代码就要在多个python文件中出现,重复多次,不仅浪费空间而且效率低。

如果我们把这个函数定义在一个专门的模块中,每次使用的时候,导入模块调用,函数仅定义了一次,不仅节省空间,而且每次使用时导入模块调用即可,不必再去定义,可以提高效率。

二、模块的导入方式

模块在使用前需要先导入,导入的语法如下:

[ from 模块名 ] import [ 模块 | 类 | 变量 | 函数 | *] [as 别名 ]

常用的组合形式如:

import 模块名 from 模块名 import 类、变量、方法等 from 模块名 import * import 模块名 as 别名 from 模块名 import 功能名 as 别名

2.1 import模块名

语法:

import 模块名    #导入一个模块

import 模块名1,模块名2    #导入多个模块,用逗号隔开

模块名.功能名()    #使用模块内的功能时用 “ . ”访问

我们在学习文件的时候,为了方便观察,使用了sleep函数,下面让我们看一下如何导入time模块,调用sleep函数:

import time   #导入python内置模块time(time.py文件)
print('5秒之后输出:Hello World')
time.sleep(5)  #通过.访问模块内的函数
print('Hello World')

运行后:

2.2 from 模块名 import 功能名

语法:

from 模块名 import 功能名   #导入模块内的某个功能

功能名( )    #使用模块内的功能时无须其他,直接使用功能名即可

代码示例:

from time import sleep   #导入python内置模块time中的sleep方法
print('5秒之后输出:Hello World')
sleep(5)  #直接使用函数名
print('Hello World')

运行后:

2.3 from 模块名 import *

语法:

from 模块名 import *   #导入模块内的所以功能

功能名( )    #使用模块内的功能时无须其他,直接使用功能名即可

代码示例:

from time import *   #导入python内置模块time中的所有方法
print('5秒之后输出:Hello World')
sleep(5)  #直接使用函数名
print('Hello World')

运行后:

2.4 as定义别名

当我们导入的模块名、功能名太长,使用不方便时,可以另定义为的新名称,以便后续使用。

语法:

# 模块定义别名

import 模块名 as 别名

# 功能定义别名

from 模块名 import 功能 as 别名

模块定义别名 ,代码示例:

import time as t  #导入python内置模块time并改名为t
print('5秒之后输出:Hello World')
t.sleep(5)  #通过.访问模块内的函数
print('Hello World')

运行后:

功能定义别名, 代码示例:

from time import sleep as s  #导入python内置模块time中的sleep方法并改名为s
print('5秒之后输出:Hello World')
s(5)  #直接使用函数名
print('Hello World')

运行后:

三、自定义模块

除了python中已经写好的模块,有时候我们也需要自己写模块以供使用,即自定义模块。

注意:自定义模块名必须要符合标识符命名规则。

例如我们要写一个定义加法的模块,创立一个新文件add.py,在其中定义一个加法函数。

在test1.py中导入自定义模块add,使用my_test函数,代码示例:

import add
ret=add.my_test(2,3)
print(ret)

输出:

5

 3.1 __main__

一般我们在自定义模块时,经常会在模块内测试一下功能,确保功能可以正常使用。但是在另一个文件中调用的时候,模块中的测试也会跟随输出,因为模块再被导入的时候,实际上模块内的代码也被执行了,那如何解决这个问题呢?

我们可以通过文件中的内置变量__name__来解决,将 '__main__'赋给变量__name__,在模块内if判断的结果就为True,在导入了该模块的其他文件中if判断的结果就为False(因为其他文件中的内置变量__name__的值不是 '__main__'),用于功能测试的代码语句就能得以控制。

add.py :

def my_test(x,y):
    print (x+y)

# 只在当前文件中调用该函数,其他导入的文件内不符合该条件,则不执行test函数调用
if __name__ == '__main__':#点击右键运行后, '__main__'被赋给变量__name__
    my_test(2, 3)

test1.py :

import add
add.my_test(2,3)

运行test1.py后输出 :

5

3.2 __all__

如果模块文件中有'__all__'变量,当使用 ' from 模块名 import  * ' 导入时,只能导入这个列表中的元素。

moudle1.py:

__all__=['add','sub']

def add(x,y):
    print(x+y)

def sub(x,y):
    print(x-y)

def mul(x,y):
    print(x*y)

def div(x,y):
    print(x/y)

test1.py :

from moudle1 import*
add(1,5)
sub(6,2)
mul(4,2)

moudle1.py的列表中只有add和sub,在test1.py中是无法使用mul的,运行test1.py后:

3.3 不同模块的同名功能

当导入多个不同的模块,且不同模块内有同名功能时,如果调用这个同名功能,调用到的是后面导入的模块的功能。

在模块moudle1.py中定义函数func,在模块moudle2.py中定义同名函数func,文件test1.py导入这两个模块的同名函数后,调用到的是后面导入的模块的函数,示例如下:

moudle1.py:

def func():
    print('灰太狼')

moudle2.py:

def func():
    print('喜羊羊')

test1.py :

from moudle1 import func
from moudle2 import func
func()

运行test1.py后输出:

喜羊羊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值