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

Python入门Day18:模块与包(module package)

学习目标:

  • 理解模块(module)和包(package)的区别和联系
  • 学会使用import语句导入模块
  • 掌握自定义模块,创建包的方式
  • 能使用__init__.py,__name__控制模块行为
  • 学会使用标准库与第三方库(如math,random,os,sys)

一、什么是模块(module)

定义:

一个模块就是一个.py文件,包含了可复用的函数,变量,类等

# 文件名:greeting.pydef say_hello(name):print(f"Hello, {name}!")

导入模块的几种方式

import greeting 
greeting.say_hello("Alice")
from greeting import say_hello
say_hello("Alice")
from greeting import *   # 不推荐,会引入所有内容

二、标准库模块(内置)

Python自带了大量实用模块,无需安装,直接导入即可:

模块化作用
math数学运算
random随机数生成
os系统操作(如路径,环境变量)
sys解释器相关
datetime时间与日期

示例1:使用math模块

import mathprint(math.sqrt(16))        #4.0
print(math.pi)              #3.141592....

示例2:使用random模块

import randomprint(random.randint(1,10))    #随机整数
print(random.choice(["A","B","C"]))   #随机选一个元素

三、自定义模块

示例

1.创建一个文件utils.py

def add(a,b)return a+b

2.在另一个脚本中导入使用:

import utilsprint(utils.add(3,4))   # 输出 7

模块名就是.py文件名(不要加.py)

四、什么是包(package)

定义:

包就是一个包含多个模块的文件夹,并且该文件夹内有一个__init__.py文件

结构示例:

my_project/
├── my_package/
│   ├── __init__.py
│   ├── module1.py
│   └── module2.py

使用包中的模块:

from my_package import module1
module1.函数名()

from my_package.module2 import 函数名

五、特殊变量:__name__

用于判断模块是否被“直接运行”或“被导入使用”

# file: sample.py
print(__name__)  # 运行此文件时是"__main__",被导入时是模块名

常用结构:

def main():print("This is main logic")if __name__ == "__main__"main()

六、第三方模块与pip使用(了解)

安装新模块:

pip install requests

导入使用:

import requests
response = requests.get("https://api.github.com")
print(response.status_code)

小结:模块vs包

项目模块(module)包(package)
本质.py文件文件夹+模块+__init__.py
用于组织函数/类组织多个模块
导入方式import xxxfrom 包   import   模块

练习题:

1.自己新建一个模块 math_tools.py,写一个函数 square(n) 求平方,然后导入使用;

2.创建一个包 calc_pkg/,其中两个模块分别实现加法和乘法;

3.使用 random 模块生成 5 个 1~100 的随机整数;

4.写一个模块 greet.py,加入 __name__ == "__main__" 判断逻辑;

5.使用 ossys 模块打印当前路径和 Python 版本。

http://www.lryc.cn/news/624683.html

相关文章:

  • Spring Boot + Spring Kafka 集成
  • SMTPman,smtp ssl助力安全高效邮件传输!
  • Java 中表示数据集的常用集合类
  • 低端设备加载webp ANR
  • 安全存储之 SAES+HUK 使用技巧和常见问题 LAT1543
  • Rust 教程之简介000
  • CSS:水平垂直居中
  • 【银河麒麟桌面系统】配置匿名文件夹与用户认证共享服务
  • 2025年秋招Java后端面试场景题+八股文题目
  • AI 推荐系统云端部署实战:基于亚马逊云科技免费资源的工程实现
  • 从财务整合到患者管理:德国医疗集团 Asklepios完成 SAP S/4HANA 全链条升级路径
  • CAN总线的安全性
  • Linux小白加油站,第三周周考
  • 世界模型之自动驾驶
  • 想找出版社出书?这样选就对了!
  • 《P1195 口袋的天空》
  • OVS:ovn是如何支持组播的?
  • GPT-5之后:当大模型更新不再是唯一焦点
  • 多硬盘构建lvm存储
  • GPT-5博士级AI使用教程及国内平替方案
  • 基于SpringBoot+Uniapp的互联网订餐小程序(协同过滤算法、Echarts图形化分析)
  • “Let it Crash“:分布式系统设计的涅槃重生哲学
  • 【笔记】位错的定义和分类
  • 【2025CVPR-目标检测方向】学习稳健且硬件自适应的对象检测器,以应对边缘设备的延迟攻击
  • Image-to-Music API 接入文档(图片生成音乐)
  • 综合布线系统的网络分线箱计量-文字查找精准定位
  • 区块链技术原理(16)-以太坊节点与客户端
  • 从0-1使用Fastmcp开发一个MCP服务,并部署到阿里云百炼 -持续更新中
  • 深入理解浏览器渲染机制:重排(Reflow)与重绘(Repaint)
  • 深入剖析以太坊虚拟机(EVM):区块链世界的计算引擎