python 模块import(26)
admin
2023-01-29 08:20:03
0

一.模块简介

python开发中,每一个.py文件都可以看作是一个模块,模块内部的函数或者方法可以被其他模块调用,至于函数或者方法是具体如何实现的,调用者不需要关心。

 

python 模块import(26)

 

假如项目中既含有UI也有逻辑代码还有功能实现,如果全写在一个py文件,可能会有几万甚至十几万行代码,显得代码很臃肿,为了方便代码阅读和维护,我们可以将项目拆分为多个模块,不同的模块实现不同的功能,这样分工合作开发效率也高,而且就算出现bug也方便定位。

python 模块import(26)

 

二.模块分类

1.系统内置模块

python中有一些内置模块我们直接调用,比如:sys、time、json等,具体使用方法我们在调用模块中详细讲解;

2.第三方开源模块

安装第三方开源模块,可以直接cmd打开控制台或者打开pycharm终端运行 pip install <模块名> 即可,前提是anacoanda已经安装正确,例如:学习爬虫的时候需要安装request

1

pip install request


3.自定义模块

除了前面两种模块,我们也可以自己写模块来供自己调用,具体实现什么功能有自己决定,在后面的模块调用中会有详细讲解,值得注意的是:模块名字不能和内置模块名字一样,会造成冲突;

 

三.调用模块

使用 import关键字 导入模块,并放置在代码最开始位置;同一个模块不管执行了多少次 import <模块名>,实际上只会被导入一次。

为了讲解关于模块的调用方法,假如我们有一个计算加减乘除的模块文件calculator.py,代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

# !usr/bin/env python

# -*- coding:utf-8 _*-

"""

@Author:何以解忧

@Blog(个人博客地址): shuopython.com

@WeChat Official Account(微信公众号):猿说python

@Github:www.github.com

@File:calculator.py

@Time:2019/10/11 21:25

 

@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

"""

 

# 定义一个全局变量

name = "calculator"

 

# 加法

def add(x,y):

    return x+y

 

# 减法

def sub(x,y):

    return x-y

 

# 乘法

def multiplication(x,y):

    return x*y

 

# 除法

def division(x,y):

    return x/y

 

# 使用内置函数eval计算表达式的结果,如果表达式有误,直接抛异常

def get_result(input_str):

    try:

        return eval(input_str)

    except Exception as e:

        print("表达式输入异常!")

        return None

如果已经忘记python 异常处理的小伙伴请参考:  python 异常处理详细讲解

 

1.import <模块名>

新建一个py文件,用于调用模板文件 calculator.py 中的函数,代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

# 导入模块

import calculator

 

# 调用calculator模块中的add函数 : 模块名.函数名  或者 模块名.变量名

result = calculator.add(2,5)

print(result)

 

# 调用calculator模块中的sub函数 : 模块名.函数名  或者 模块名.变量名

result = calculator.sub(2,5)

print(result)

 

# 调用calculator模块中的multiplication函数 : 模块名.函数名  或者 模块名.变量名

result = calculator.multiplication(2,5)

print(result)

 

# 调用calculator模块中的add函数 : 模块名.函数名  或者 模块名.变量名

result = calculator.division(2,5)

print(result)

 

# 调用calculator模块中的get_result函数 : 模块名.函数名  或者 模块名.变量名

result = calculator.get_result("3+2*8-40")

print(result)

 

# 调用calculator模块中的name变量 : 模块名.函数名  或者 模块名.变量名

print(calculator.name)

输出结果:

1

2

3

4

5

6

7

-3

10

0.4

-21

calculator

注意:调用模中的函数时需要指明函数或者变量来自哪个模板:<模块名>.函数名    <模块名>.变量名

 

2.from <模块名> import <函数或者变量>,<函数或者变量>,<函数或者变量>…..

做一个简单理解,从哪个模导入哪些函数或者变量,外部导入模块后调用时只能调用导入的函数或者变量,模块中没有导入的变量或者函数不能调用,示例代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

'''

从模块calculator中导入add,sub两个函数,

意味着调用calculator模块时,只能调用add,sub两个函数,

calculator 模块中的其他变量或者函数无法调用

'''

 

from calculator import add,sub

 

# 在代码顶部已经声明add函数从calculator导入,可以直接使用,不需要带上模板名

result = add(2,5)

print(result)

 

# 在代码顶部已经声明sub函数从calculator导入,可以直接使用,不需要带上模板名

result = sub(2,5)

print(result)

 

# 错误写法:该模块并没有导入name变量

# result = multiplication(2,5)

 

# 错误写法:该模块并没有导入name变量

# result = division(2,5)

 

# 错误写法:该模块并没有导入name变量

# result = calculator.get_result("3+2*8-40")

 

# 错误写法:该模块并没有导入name变量

# print(calculator.name)

 

 

3.from <模块名> import *

这种写法表示直接导入模块中的所有内容,意味着模块中的函数或者变量都可以使用,该写法实际上和第二种导入方法类似,示例代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

# 导入calculator 模块中所有函数和变量

from calculator import *

 

# 在代码顶部已经声明导入calculator模块所有内容,可以直接使用,不需要带上模板名

result = add(2,5)

print(result)

 

# 在代码顶部已经声明导入calculator模块所有内容,可以直接使用,不需要带上模板名

result = sub(2,5)

print(result)

 

# 在代码顶部已经声明导入calculator模块所有内容,可以直接使用,不需要带上模板名

result = multiplication(2,5)

print(result)

 

# 在代码顶部已经声明导入calculator模块所有内容,可以直接使用,不需要带上模板名

result = division(2,5)

print(result)

 

# 在代码顶部已经声明导入calculator模块所有内容,可以直接使用,不需要带上模板名

result = get_result("3+2*8-40")

print(result)

 

# 在代码顶部已经声明导入calculator模块所有内容,可以直接使用,不需要带上模板名

print(name)

输出:

1

2

3

4

5

6

7

-3

10

0.4

-21

calculator

使用该方法导入模块时有一个缺陷:如果同时导入多个模块文件,如果模块中的函数或者变量重名,编译器也不知道具体是用哪一个模块重名的函数或者变量,会造成意想不到的bug,往往这种bug最难查找!

 

四.简单的计算器

利用上面的calculator模块,再加上前面的python基础知识,其实我们已经可以写一个简单的计算器了,唯独没有界面而已,至于界面后面会有pyqt5的教程,暂时不做过多讲解。计算器代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

# 导入内置模块time,计算耗时,默认单位秒

import time

# 导入calculator 模块

import calculator

 

 

while True:

    # 获取表达式

    input_str = input("请输入表达式:")

    if input_str == 'q': # 输入 q 退出程序

        break

    time_start = time.clock()

    print(calculator.get_result(input_str))

    time_end = time.clock()

    # 将 秒 转为 毫秒

    print("计算耗时:{}毫秒".format((time_end-time_start)*1000))

 

print("退出计算,程序结束!")

测试结果:

python 模块import(26)

 

 

五.重点总结

1.注意模块的几种导入方式,python开发中推荐使用写法一的方式导入:import <模块名>;

2.注意内置函数和内置模块的区别:内置函数是任何模块都可以直接调用,内置模块需要import模块之后才能调用模块里面的函数;

3.不同的模块中可以存在相同的变量名或者函数名,但是不能与内置函数名或者内置模块名字重复,避免造成冲突;

猜你喜欢:

1.python内置函数input/eval函数

2.字典推导式

3.列表推导式

4.python异常处理

 

转载请注明:猿说Python » python模块


相关内容

热门资讯

“引力一号”成功发射一箭九星,... IT之家 7 月 22 日消息,今天上午,引力一号运载火箭在上海东部海域点火升空,成功将 9 颗卫星...
特朗普向4名士兵灵柩敬礼,均阵... 当地时间7月22日,美国总统唐纳德·特朗普率领数位高官,来到位于特拉华州的多佛空军基地,参加了阵亡美...
“特朗普这么干,10年后,美国... 据南华早报7月23日报道,分析人士认为,北京如今在语言能力方面更善于解读美国战略,而美国却难以做到同...
墨西哥一市长在市政厅内遭枪击死... 综合法新社等多家外媒报道,墨西哥检方当地时间22日通报称,该国中部一地方市长在市政厅内遭枪击死亡。今...
编造传播涉汛涉灾网络谣言,公安... 为有力保障防汛救灾工作,公安机关网安部门依托“净网—2026”专项行动,持续严厉打击编造传播涉汛等涉...
松下洗衣机洗衣服操作方法 **洗衣机是一种高品质的洗衣设备,它具有简单易用的设计,使用方便。如果你是第一次使用一台**洗衣机,...
小天鹅自动洗衣机操作方法 小天鹅自动洗衣机是目前市场上比较主流的一种洗衣机,它因为具有自动化操作、节能环保、节约用水等优点,受...
全自动洗衣机进水操作方法 全自动洗衣机是现代家庭中常用的一种家电产品,使用它能够帮助我们更加方便快捷地完成家务工作,但是很多人...
中欧洗衣机操作方法 中欧洗衣机操作方法:1. 打开机门和水龙头,确认水龙头通水正常;2. 将洗好的衣服放进洗衣机内,并尽...
滚筒洗衣机漏水的原因和简单修理... 可能是因为前门视孔漏水,滚筒智能洗衣机的前门有一个圆形视孔窗部位,则是放、取衣物的部位。由于洗衣机使...