当前位置: 首页 > java >正文

Python 训练营打卡 Day 30

模块和库的导入

一、库导入的三种方式
# 方式1:导入整个模块
import mathprint("方式1:使用 import math")
print(f"圆周率π的值:{math.pi}")
print(f"2的平方根:{math.sqrt(2)}\n")# 方式2:导入特定的函数或变量
from math import pi, sqrtprint("方式2:使用 from math import pi, sqrt")
print(f"圆周率π的值:{pi}")
print(f"2的平方根:{sqrt(2)}\n")# 方式3:非标准导入方式的导入整个库
from math import *print(f"圆周率π的值:{pi}")
print(f"2的平方根:{sqrt(2)}")

对于方式1和方式3,虽然 import math和 from math import *看起来都是导入了 math 模块,但它们在导入方式、作用域处理以及对命名空间的影响上有重要的区别。

  1. 命名空间的污染 import math:这种方法会将整个 math 模块导入到命名空间中,但是需要使用 math. 前缀来访问模块内的函数或变量。这种方式保持了命名空间的整洁,因为所有的 math 函数和变量都包含在 math 这个模块对象中。 from math import *:这种方法将 math 模块中的所有公开的函数和变量导入到当前的命名空间中,可以直接使用这些函数和变量而无需 math. 前缀。这种方式可能会导致命名空间污染,特别是当有多个模块都被这样导入时,很容易发生命名冲突。

  2. 明确性和可维护性 import math:明确指出了函数和变量来源于 math 模块,这对代码的可读性和维护性都是有益的。其他阅读你代码的人可以清楚地看到每个函数的来源,这对大型项目和团队合作尤为重要。 from math import *:虽然代码看起来更简洁,但这种方法减少了代码的明确性。如果没有足够的上下文,很难判断一个特定的函数是来自 math 模块还是其他模块,尤其是当你导入了多个模块时。

二、模块的导入方式

模块(Module)

  • 本质:以 .py 结尾的单个文件,包含Python代码(函数、类、变量等)。
  • 作用:将代码拆分到不同文件中,避免代码冗余,方便复用和维护。

模块导入的常用方式有:

# 方式1:基本导入,导入了整个模块
import module_name
# 使用方式: module_name.function_name()# 方式2:别名导入,导入了模块并指定别名
import module_name as alias
# 使用方式:alias.function_name()# 方式3:选择性导入,从模块中导入特定的函数或类
from module_name import function_name
# 使用方式:可以直接使用function_name()# 方式4:多对象导入,从模块中导入多个对象
from module_name import function1, function2, Class1# 方式5:相对导入,在包内使用相对路径导入
from . import module_name  # 同级
from .. import module_name # 上级

使用建议:优先使用基本导入或者选择性导入,对于常用模块可以使用别名缩短名称,大型项目推荐使用相对导入保持结构清晰

http://www.xdnf.cn/news/7685.html

相关文章:

  • SpringBoot实现本地对象存储【minio、阿里云、七牛云】
  • Python-多进程编程 (multiprocessing 模块)
  • 101个α因子#6
  • P2670 [NOIP 2015 普及组] 扫雷游戏
  • 使用VGG-16模型来对海贼王中的角色进行图像分类
  • 【CodeBuddy 】从0到1,打造一个“牛马打鸡血仪”
  • C++ 初阶 | 类和对象易错知识点(上)
  • leetcode2310. 个位数字为 K 的整数之和-medium
  • Python字符串切片详解
  • Oracle中如何解决FREE BUFFER WAITS
  • Modbus通信协议详解
  • 字典和哈希表(javascript版)
  • 水利数据采集MCU水资源的智能守护者
  • 使用VMWare安装的ubuntu虚拟机,突然无法上网.
  • 鸿蒙应用开发:应用运行到设备报错,可能是版本问题,可通过hdc查询设备API版本
  • 第8天-Python趣味绘图:用Turtle库开启绘画编程之旅
  • tcpdump抓包
  • Nuxt的SEO实践
  • 基于MakeReal3D的虚拟预装系统:飞机装配效率与精度的双重突破
  • 告别蜘蛛池!PHP 打造你的网站专属蜘蛛导航仪
  • UDP协议简介
  • Runtime Suspend 专项训练
  • Apollo10.0学习——planning模块(8)之scenario、Stage插件详解二
  • 第二届帕鲁杯screenshot
  • 【AS32X601驱动系列教程】MCU启动详解
  • 力扣热题——零数组变换 |
  • 使用Dockerfile构建含私有Maven仓库依赖包的Java容器
  • 软件设计师考试三大核心算法考点深度解析(红黑树 / 拓扑排序 / KMP 算法)真题考点分析——求三连
  • 进阶知识:无参的函数装饰器之深入理解@wraps()
  • Vue-cli搭建项目