Python导入本地脚本与模块的高级技巧指南

许南星
许南星
发布时间:2026-10-13| 6人浏览过
原创

本文详细解析Python中import语句的使用,涵盖如何导入同一目录下的本地脚本、使用别名简化调用、利用if __name__块控制执行流,以及从模块中精准导入单个或全部对象的方法。通过具体代码示例,帮助开发者掌握模块管理的最佳实践,提升代码复用性与可维护性。

Python导入本地脚本与模块的高级技巧指南

本文详细介绍Python中利用import语句导入本地脚本及模块的核心技巧,旨在为开发者提供实用的参考方案。

导入本地脚本

导入本地脚本

当待导入的Python脚本与当前执行脚本处于同一目录时,直接使用import关键字后跟文件名即可,无需添加.py扩展名。具体语法示例如下:


import useful_functions
useful_functions.add_five([1, 2, 3, 4])

在导入模块时,可以通过添加别名来引用该模块,从而使用更简洁或不同的名称进行操作。


import useful_functions as uf
uf.add_five([1, 2, 3, 4])

使用 if __name__ 块

使用 if __name__ 块

为防止脚本在被其他脚本作为模块导入时执行其中的可运行代码,建议将这些代码包裹在 if __name__ == "__main__" 代码块中。另一种做法是将相关逻辑封装在函数 main() 中,并在 if __name__ 块内调用该函数。

每次运行Python脚本时,系统会自动为所有模块初始化一个特殊的内置变量 __name__。当直接运行脚本时,Python将其视为主程序,并将该模块的 __name__ 变量赋值为字符串“main”。而对于被导入的模块,该变量则被赋值为模块名。因此,条件 if __name__ == "__main__" 用于判断当前模块是否为主程序运行。

在同一目录下创建以下两个脚本文件,并在终端中执行这些脚本,以验证 if __name__ 块的功能并访问导入模块中的对象。

demo.py 文件


# demo.py
import useful_functions as uf
scores = [88, 92, 79, 93, 85]
mean = uf.mean(scores)
curved = uf.add_five(scores)
mean_c = uf.mean(curved)
print("Scores:", scores)
print("Original Mean:", mean, " New Mean:", mean_c)
print(__name__)
print(uf.__name__)

useful_functions.py文件


# useful_functions.py
def mean(num_list):
  return sum(num_list) / len(num_list)
def add_five(num_list):
  return [n + 5 for n in num_list]
def main():
  print("Testing mean function")
  n_list = [34, 44, 23, 46, 12, 24]
  correct_mean = 30.5
  assert(mean(n_list) == correct_mean)
  print("Testing add_five function")
  correct_list = [39, 49, 28, 51, 17, 29]
  assert(add_five(n_list) == correct_list)
  print("All tests passed!")
if __name__ == '__main__':
  main()

执行 $ python demo.py 命令后,输出结果如下:

Scores: [88, 92, 79, 93, 85] Original Mean: 87.4 New Mean: 92.4 __main__ useful_functions

若执行 $ python useful_functions.py 命令,则输出结果如下:

Testing mean function Testing add_five function All tests passed!

import 导入模块的技巧

import 导入模块的技巧

若需从模块中导入单个函数或类,可采用以下语法:


from module_name import object_name

若需从模块中导入多个独立对象,可使用如下方式:


from module_name import first_object, second_object

若需对模块进行重命名,语法如下:


import module_name as new_name

若需从模块中导入对象并重命名,可使用:


from module_name import object_name as new_name

若需从模块中导入所有对象(不推荐此做法):


from module_name import *

如果确实需要使用模块中的所有对象,建议使用标准的 import module_name 语句,并通过点记法逐一访问各对象。


import module_name

为优化代码管理,Python标准库中的模块被划分为子模块并包含在软件包中。软件包本质上是包含子模块的模块。子模块通过标准点记法指定,格式为软件包名加点后接子模块名。导入子模块的示例如下:


import package_name.submodule_name

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》

希望本文所述内容能对大家的Python程序设计工作有所帮助。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。