Python导入本地脚本与模块的高级技巧指南
本文详细解析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程序设计工作有所帮助。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









