Python 模块 import

ChatGPT 3.5 国内中文镜像站免费使用啦

基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门


一.Python 模块简介

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

图片[1]-Python 模块 import-猿说编程

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


二.Python 模块分类

1.系统内置模块

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


2.第三方开源模块

pip install <模块名>

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

pip install request

3.自定义模块

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


三.Python 模块调用

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

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

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 模块 import.py
@Time:2021/04/23 08:00
@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 中的函数,代码如下:

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 模块 import.py
@Time:2021/04/23 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
 
"""

# 导入模块
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)


'''
输出结果:

7
-3
10
0.4
-21
calculator

'''

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


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

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

'''
从模块calculator中导入add,sub两个函数,
意味着调用calculator模块时,只能调用add,sub两个函数,
calculator 模块中的其他变量或者函数无法调用
'''



# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 模块 import.py
@Time:2021/04/23 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
 
"""

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 *

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

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 模块 import.py
@Time:2021/04/23 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
 
"""

# 导入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)


'''
输出结果:
7
-3
10
0.4
-21
calculator

'''

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


四.简单的计算器

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

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python 模块 import.py
@Time:2021/04/23 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
 
"""


# 导入内置模块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("退出计算,程序结束!")

图片[2]-Python 模块 import-猿说编程

五.重点总结

  • 1.注意模块的几种导入方式,Python 开发中推荐使用写法一的方式导入:import <模块名>;
  • 2.注意内置函数和内置模块的区别:内置函数是任何模块都可以直接调用,内置模块需要 import 模块之后才能调用模块里面的函数;
  • 3.不同的模块中可以存在相同的变量名或者函数名,但是不能与内置函数名或者内置模块名字重复,避免造成冲突;

六.猜你喜欢

  1. Python for循环
  2. Python 字符串
  3. Python 列表list
  4. Python 元组tuple
  5. Python 字典 dict
  6. Python 条件推导式
  7. Python 列表推导式
  8. Python 字典推导式
  9. Python 函数声明和调用
  10. Python 不定长参数 *argc/**kargcs
  11. Python 匿名函数 lambda
  12. Python return 逻辑判断表达式
  13. Python 字符串/列表/元组/字典之间的相互转换
  14. Python 局部变量和全局变量
  15. Python type 函数和 isinstance 函数区别
  16. Python is 和 == 区别
  17. Python 可变数据类型和不可变数据类型
  18. Python 浅拷贝和深拷贝
ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
THE END
喜欢就支持一下吧
点赞3 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容