Python 中的导包(import):从入门到实践 | 搞计算机的研究生们求你们看看吧

Python 中的导包(import):从入门到实践

在 Python 中,如果我们想使用其他人或自己写的功能(函数、类等),最常见的方式就是“导包”(import)。导包就相当于“拿来一个工具箱”,把里面的工具(代码)借来使用。本文将从基础到稍微进阶的层面,为你详细介绍 Python 的导包方式与常见用法。

一、为什么要导包?

举个生活中的例子:

  • 如果你要砍木头,需要一把斧子或电锯;
  • 如果你要拔钉子,需要钳子或起子。
  • 在编程中,这些“工具”就可以看作各种功能、函数、类等。Python 官方或社区为我们准备了很多“工具箱”,里面装满了各种常用或专业的功能(比如数学运算、处理表格数据、网络通信等等)。我们不必重复造轮子,只需要把“工具箱”导入,直接使用它就可以了。

    二、最基础的 import 用法

    1. 直接 import 模块名

    这是最基本、最直接的导包方法。比如我们想要使用 Python 内置的 math 模块来做数学运算,就可以这么写:

    import math
    
    # 使用 math 模块中的 sqrt 函数
    num = 16
    result = math.sqrt(num)
    print(result)  # 输出 4.0
    

    在这里,我们先 import math,就可以使用 math 模块里的所有公开函数,比如 math.sqrt()math.sin()math.cos() 等等。

    小提示:

  • math 是 Python 的内置模块,安装 Python 时就自带了,不需要额外安装。
  • 类似的内置模块还有 randomdatetime 等,我们都可以用 import 模块名 的方式来使用。
  • 2. 使用 from 模块名 import 函数名/类名

    有时候我们只想用模块中的某些函数或类,不想每次都写 模块名.函数名,那就可以用这种形式。以 math 模块为例:

    from math import sqrt
    
    num = 25
    result = sqrt(num)  
    print(result)  # 输出 5.0
    

    这里我们直接从 math 模块里导入了 sqrt 函数,这样在后续的使用中,就可以直接写 sqrt(),而不用写 math.sqrt() 了。

    但是要注意:
    如果使用了相同名称的函数或变量,可能会出现“命名冲突”。比如你自己也定义了一个 sqrt 函数,那么就会出现混淆。所以要小心命名冲突的问题。

    3. import 模块名 as 新名字(重命名)

    如果我们想让模块名更短或更简单,可以用 as 给它起一个别名,常见于一些比较长的库名称,比如 numpypandas 等。示例:

    import math as m
    
    num = 36
    result = m.sqrt(num)  
    print(result)  # 输出 6.0
    

    这样以后使用的时候,直接 m.sqrt() 就可以了,比较简洁。

    同样,如果只导入模块中的部分内容,也可以给那部分内容起别名:

    from math import sqrt as s
    
    num = 49
    result = s(num)
    print(result)  # 输出 7.0
    

    三、导入多个模块或多个函数

    1. 同时导入多个模块

    如果你要同时导入多个模块,可以写在同一行或者多行,灵活使用:

    import math, random
    
    # 使用 math 模块
    result_1 = math.sqrt(9)
    
    # 使用 random 模块
    result_2 = random.randint(1, 10)
    
    print(result_1)  # 3.0
    print(result_2)  # 1~10之间的随机整数
    

    最好还是养成良好的习惯,把不同模块分到不同的导入语句中,以提高可读性:

    import math
    import random
    

    2. 同时导入一个模块中的多个函数

    如果只想从一个模块里导入多个函数,可以用逗号分隔:

    from math import sqrt, sin, cos
    
    print(sqrt(16))  # 4.0
    print(sin(3.14159))  # 近似 0
    print(cos(3.14159))  # 近似 -1
    

    四、从自定义模块导入

    除了 Python 自带和社区常用的库,你也可以自己编写 Python 文件作为“自定义模块”,然后在别的文件中导入。

    1. 新建一个文件 mytools.py,内容如下:

      def say_hello(name):
          print(f"Hello, {name}!")
      
      def add_numbers(a, b):
          return a + b
      
    2. 在同一文件夹下,新建另一个 Python 文件 test.py 并写:

      import mytools
      
      mytools.say_hello("Alice")  # Hello, Alice!
      result = mytools.add_numbers(5, 7)
      print(result)  # 12
      

    Python 会在当前文件夹下找一个叫 mytools.py 的文件,并导入其中定义的函数 say_helloadd_numbers

    如果只想要导入 say_hello,可以这样写:

    from mytools import say_hello
    
    say_hello("Bob")  # Hello, Bob!
    

    当然,在大型项目里,模块之间的层次会更复杂,还会涉及 相对导入 等,更高级的用法需要我们在学习到包(package)的概念后再深入掌握。

    五、一次性导入全部内容:from 模块名 import *

    有时候,我们会看到类似 from math import * 的语句,这表示把 math 模块里的所有函数和变量一次性导入到当前作用域中。这样就可以直接用 sqrt()sin() 等,似乎很方便。但这样做在实际项目中并不推荐,主要原因有两个:

    1. 代码可读性变差:无法一眼看出哪些函数来自本地定义,哪些来自模块。
    2. 可能发生命名冲突:如果你本地有个函数和模块里的同名函数冲突,会导致各种难以排查的错误。

    所以,在实际工作中,from ... import * 一般只在交互式实验(如 Jupyter Notebook 快速测试)或临时小脚本中使用,正式项目中尽量不要这样写。

    六、安装并导入第三方库

    Python 不仅有内置标准库,还有很多由社区贡献的第三方库。例如:

  • requests(进行网络请求),
  • flask(Web 后端框架),
  • tensorflow(深度学习),等等。
  • 使用第三方库时,需要先在命令行/终端执行:

    pip install requests
    

    然后就可以在代码里用 import requests 来引用了:

    import requests
    
    response = requests.get("https://www.example.com")
    print(response.status_code)  # 200
    

    七、总结

  • Python 的“导包”就是将另一个脚本或库中的“工具”拿来使用。
  • 常见用法包括:
  • import 模块名
  • from 模块名 import 函数/类/变量
  • import 模块名 as 别名
  • from 模块名 import 函数/类/变量 as 别名
  • 对于自己的代码,可以将常用函数写在一个单独的文件(模块)中,然后在其他脚本中导入复用。
  • 使用第三方库前,先用 pip install 库名 安装,然后再 import
  • 除了演示和临时使用,一般不建议使用 from 模块名 import * 方式来导包。
  • 希望本文能让你快速理解并上手 Python 的导包语法,合理地使用 Python 库既能提高代码质量,也能节省开发时间。让我们在编程之路上越走越顺利吧!


    感谢阅读! 如果这篇文章对你有帮助,欢迎分享给你的同学或朋友。一起学习,一起进步!

    作者:迪菲赫尔曼

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python 中的导包(import):从入门到实践 | 搞计算机的研究生们求你们看看吧

    发表回复