Python 练习营打卡 Day 30-模块和库的导入

[复制链接]
发表于 2025-7-7 19:31:38 | 显示全部楼层 |阅读模式
模块和库的导入

1.1尺度导入

  1. import math
  2. print("方式1: 使用 import math")
  3. print(f"圆周率π的值: {math.pi}")
  4. print(f"2的平方根: {math.sqrt(2)}\n")
复制代码

1.2从库中导入特定项

  1. from math import pi, sqrt
  2. print("方式2:使用 from math import pi, sqrt")
  3. print(f"圆周率π的值:{pi}")
  4. print(f"2的平方根:{sqrt(2)}\n")
复制代码

1.3非尺度导入:导入整个库

  1. from math import *
  2. print(f"圆周率π的值:{pi}")
  3. print(f"2的平方根:{sqrt(2)}")
复制代码

虽然 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` 模块还是其他模块,尤其是当你导入了多个模块时
模块

本质:以.py末了的单个文件,包含python代码(函数、类、变量等)
作用:将代码拆分到不同文件中,制止代码冗余,方便复用和维护


本质:有条理的文件目次结构(即文件夹),用于组织多个模块和子包
核心特性:包的根目次下必须包含一个__init__.py文件(可以为空),用于标识改目次是一个包
1.基本导入方法

  1. import module_name  # 导入整个模块
  2. import module_name as alias  # 导入模块并使用别名
  3. from module_name import function_name  # 从模块导入特定函数/类
  4. from module_name import *  # 导入模块所有内容(不推荐)
复制代码
2.相对导入(在包内部使用)

  1. from . import module_name  # 从当前目录导入
  2. from .. import module_name  # 从上级目录导入
  3. from .module_name import function_name  # 从当前目录模块导入特定内容
复制代码
3.动态导入

  1. module = __import__('module_name')  # 使用__import__函数
  2. import importlib
  3. module = importlib.import_module('module_name')  # 使用importlib模块
复制代码
4.条件导入

  1. try:
  2.     import module_name
  3. except ImportError:
  4.     # 处理导入失败的替代方案
  5.     pass
复制代码
      作业:本身新建几个不同路径文件实验下怎样导入
   编写一个盘算长方形面积的代码并生存在rectangle.py
  
  1. def calculate_rectangle_area(length, width):
  2.     return length * width
  3. # 测试用例
  4. if __name__ == "__main__":
  5.     print(calculate_rectangle_area(5, 3))  # 输出: 15
  6.     print(calculate_rectangle_area(2.5, 4))  # 输出: 10.0
复制代码
  VSCode 或 PyCharm通常会将你打开的项目文件夹设为“根目次”(或者说,运行时的工作目次)。Python 在导入模块时,会从这个根目次(以及其他一些尺度位置和脚本地点的目次)开始查找
   1.同目次下导入

  
  1. from rectangle import calculate_area
  2. # 或者
  3. import rectangle
  4. # 使用方式:
  5. # area = calculate_area(length, width)
  6. # 或者
  7. # area = rectangle.calculate_area(length, width)
复制代码
  2.从子目次中导入(子目次名为:day30 )

  
  1. from day30.rectangle import calculate_area
  2. # 或者
  3. from day30 import rectangle
  4. # 使用方式同上
复制代码
  3.从上级目次导入

  
  1. import sys
  2. sys.path.append(".C:\Users\ggggg\Desktop\python\python60-days-challenge-master (2)\python60-days-challenge-master.")  
  3. from rectangle import calculate_area
复制代码
  @浙大疏锦行

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

快速回复 返回顶部 返回列表