08-模块与包

第8节 模块与包

在这一节中,我们将详细介绍 Python 中的模块和包。模块和包是 Python 中组织代码的重要方式,可以帮助我们更好地管理和复用代码。我们将学习如何导入模块、使用标准库中的模块、创建自己的模块以及理解包的概念。

8.1 导入模块

模块是包含 Python 代码的文件,通常以 .py 为扩展名。通过导入模块,我们可以使用模块中定义的函数、类和变量。

基本语法:

import module_name

示例:

import math

# 使用 math 模块中的函数
result = math.sqrt(16)
print(result)  # 输出 4.0

导入模块中的特定成员: 可以使用 from ... import ... 语法导入模块中的特定成员。

示例:

from math import sqrt

# 直接使用 sqrt 函数
result = sqrt(16)
print(result)  # 输出 4.0

导入模块中的所有成员: 可以使用 from ... import * 语法导入模块中的所有成员,但不推荐这样做,因为它可能会导致命名冲突。

示例:

from math import *

# 直接使用 sqrt 函数
result = sqrt(16)
print(result)  # 输出 4.0

导入模块并重命名: 可以使用 as 关键字为模块或成员指定别名。

示例:

import math as m

# 使用别名 m
result = m.sqrt(16)
print(result)  # 输出 4.0
8.2 标准库介绍

Python 标准库包含了大量的模块,提供了丰富的功能。以下是一些常用的模块:

  • os :用于操作文件和目录。
  • sys :用于访问和操作 Python 解释器。
  • datetime :用于处理日期和时间。
  • json :用于处理 JSON 数据。
  • re :用于正则表达式操作。
  • random :用于生成随机数。

示例:

import os
import sys
import datetime
import json
import re
import random

# 使用 os 模块
current_directory = os.getcwd()
print(current_directory)

# 使用 sys 模块
print(sys.version)

# 使用 datetime 模块
now = datetime.datetime.now()
print(now)

# 使用 json 模块
data = {
    "name""Alice",
    "age"25
}
json_data = json.dumps(data)
print(json_data)

# 使用 re 模块
pattern = r"\d+"
text = "There are 123 apples and 456 oranges."
matches = re.findall(pattern, text)
print(matches)

# 使用 random 模块
random_number = random.randint(110)
print(random_number)
8.3 创建自己的模块

可以将相关的函数、类和变量放在同一个文件中,形成一个模块。然后在其他文件中导入这个模块。

示例:

  1. 创建模块文件 my_module.py

    # my_module.py

    def greet(name):
        """打印问候语"""
        print(f"Hello, {name}!")

    def add(a, b):
        """返回两个数的和"""
        return a + b

    PI = 3.14159
  2. 在其他文件中导入并使用模块:

    # main.py

    import my_module

    my_module.greet("Alice")
    result = my_module.add(35)
    print(result)
    print(my_module.PI)
8.4 包的概念

包是包含多个模块的目录。包目录中必须包含一个名为 __init__.py 的文件,即使这个文件是空的。__init__.py 文件用于标识该目录是一个包。

示例:

  1. 创建包目录结构:

    my_package/
    ├── __init__.py
    ├── module1.py
    └── module2.py
  2. 创建模块文件 module1.py

    # module1.py

    def func1():
        print("This is func1 from module1")
  3. 创建模块文件 module2.py

    # module2.py

    def func2():
        print("This is func2 from module2")
  4. 在其他文件中导入并使用包中的模块:

    # main.py

    import my_package.module1
    import my_package.module2

    my_package.module1.func1()
    my_package.module2.func2()

    # 或者使用 from ... import ...
    from my_package import module1, module2

    module1.func1()
    module2.func2()
8.5 包的初始化文件 __init__.py

__init__.py 文件可以用来执行包的初始化代码,也可以用来控制包的导出接口。

示例:

  1. __init__.py 中执行初始化代码:

    # my_package/__init__.py

    print("Initializing my_package")
  2. __init__.py 中控制导出接口:

    # my_package/__init__.py

    from .module1 import func1
    from .module2 import func2

    __all__ = ["func1""func2"]
  3. 在其他文件中使用包:

    # main.py

    from my_package import func1, func2

    func1()
    func2()

小结

通过本节的学习,你应该已经掌握了 Python 中模块和包的基本概念和用法,包括如何导入模块、使用标准库中的模块、创建自己的模块以及理解包的概念。模块和包是组织和管理代码的重要工具,能够帮助你编写更模块化、更易维护的程序。下一节我们将继续学习 Python 中的面向对象编程。

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/483577.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

03-13、SpringCloud Alibaba第十三章,升级篇,服务降级、熔断和限流Sentinel

SpringCloud Alibaba第十三章,升级篇,服务降级、熔断和限流Sentinel 一、Sentinel概述 1、Sentinel是什么 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保…

基于vite6+ vue3 + electron@33 实现的 局域网内互传文件的桌面软件

目录 项目介绍项目部分截图介绍下基础项目搭建先搭建一个vite 前端项目 再安装 electron 相关依赖依赖安装失败解决方案修改 vite配置文件和 ts 配置文件修改packjsonts相关配置项目结构介绍 项目介绍 前端 基于 vue3 ts windicss 后端 就是node 层 项目地址: h…

安装MySQL 5.7 亲测有效

前言:本文是笔者在安装MySQL5.7时根据另一位博主大大的安装教程基础上做了一些修改而成 首先在这里表示对博主大大的感谢 下面附博主大大地址 下面的步骤言简意赅 跟着做就不会出错 希望各位读者耐下心来 慢慢解决安装中出现的问题~MySQL 5.7 安装教程(全…

CSS函数

目录 一、背景 二、函数的概念 1. var()函数 2、calc()函数 三、总结 一、背景 今天我们就来说一说,常用的两个css自定义属性,也称为css函数。本文中就成为css函数。先来看一下官方对其的定义。 自定义属性(有时候也被称作CSS 变量或者级…

6.824/6.5840 Lab 1: MapReduce

宁静的夏天 天空中繁星点点 心里头有些思念 思念着你的脸 ——宁夏 完整代码见: https://github.com/SnowLegend-star/6.824 由于这个lab整体难度实在不小,故考虑再三还是决定留下代码仅供参考 6.824的强度早有耳闻,我终于也是到了挑战这座高…

MongoDB集群分片安装部署手册

文章目录 一、集群规划1.1 集群安装规划1.2 端口规划1.3 目录创建 二、mongodb安装(三台均需要操作)2.1 下载、解压2.2 配置环境变量 三、mongodb组件配置3.1 配置config server的副本集3.1.1 config配置文件3.1.2 config server启动3.1.3 初始化config …

一种多功能调试工具设计方案开源

一种多功能调试工具设计方案开源 设计初衷设计方案具体实现HUB芯片采用沁恒微CH339W。TF卡功能网口功能SPI功能IIC功能JTAG功能下行USB接口 安路FPGA烧录器功能Xilinx FPGA烧录器功能Jlink OB功能串口功能RS232串口RS485和RS422串口自适应接口 CAN功能烧录器功能 目前进度后续计…

三维测量与建模笔记 - 5.3 光束法平差(Bundle Adjustment)

此篇笔记尚未理解,先做笔记。 如上图,在不同位姿下对同一个物体采集到了一系列图像, 例子中有四张图片。物体上某点M,在四幅图像上都能找到其观测点。 上式中的f函数是对使用做投影得到的估计点位置。求解这个方程有几种方法&…

力扣hot100道【贪心算法后续解题方法心得】(三)

力扣hot100道【贪心算法后续解题方法心得】 十四、贪心算法关键解题思路1、买卖股票的最佳时机2、跳跃游戏3、跳跃游戏 | |4、划分字母区间 十五、动态规划什么是动态规划?关键解题思路和步骤1、打家劫舍2、01背包问题3、完全平方式4、零钱兑换5、单词拆分6、最长递…

ElasticSearch学习篇19_《检索技术核心20讲》搜推广系统设计思想

目录 主要是包含搜推广系统的基本模块简单介绍,另有一些流程、设计思想的分析。 搜索引擎 基本模块检索流程 查询分析查询纠错 广告引擎 基于标签倒排索引召回基于向量ANN检索召回打分机制:非精确打分精准深度学习模型打分索引精简:必要的…

Ambrus 游戏工作室将应对气候变暖与游戏变现完美结合

当 Ambrus Studio 创始人兼 CEO Johnson Yeh 计划打造他称之为“第一款伟大的 Web3 游戏”时,他设立了两个关键目标:游戏需要在传统大型工作室忽视的市场中盈利,以及它需要具备超越娱乐的意义。 在 Sui 的帮助下,Johnson 和他的团…

KAN-Transfomer——基于新型神经网络KAN的时间序列预测

1.数据集介绍 ETT(电变压器温度):由两个小时级数据集(ETTh)和两个 15 分钟级数据集(ETTm)组成。它们中的每一个都包含 2016 年 7 月至 2018 年 7 月的七种石油和电力变压器的负载特征。 traffic(交通) :描…

UEFI Spec 学习笔记---3 - Boot Manager(3)

3.2 Boot Manager Policy Protocol EFI_BOOT_MANAGER_POLICY_PROTOCOL----EFI应用程序使用该协议请求UEFI引导管理器使用平台策略连接设备。 typedef struct _EFI_BOOT_MANAGER_POLICY_PROTOCOL EFI_BOOT_MANAGER_POLICY_PROTOCOL; struct _EFI_BOOT_MANAGER_POLICY_PROTOCOL…

wordpress网站首页底部栏显示网站备案信息

一、页脚文件footer.php 例如,wordpress主题使用的是simple-life主题,服务器IP为192.168.68.89,在wordpress主题文件中有个页脚文件footer.php,这是一个包含网站页脚代码的文件。 footer.php 路径如下: /www/wwwroot/192.168.68…

QT实战-qt各种菜单样式实现

本文主要介绍了qt普通菜单样式、带选中样式、带子菜单样式、超过一屏幕菜单样式、自定义带有滚动条的菜单样式, 先上图如下: 1.普通菜单样式 代码: m_pmenu new QMenu(this);m_pmenu->setObjectName("quoteListMenu"); qss文…

数据结构实训——查找

声明: 以下是我们学校在学习数据结构时进行的实训,如涉及侵权马上删除文章 声明:本文主要用作技术分享,所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险,并遵循相关法…

指针(上)

目录 内存和地址 指针变量和地址 取地址(&) 解引用(*) 大小 类型 意义 const修饰 修饰变量 修饰指针 指针运算 指针- 整数 指针-指针 指针的关系运算 野指针 概念 成因 避免 assert断言 指针的使用 strl…

13TB的StarRocks大数据库迁移过程

公司有一套StarRocks的大数据库在大股东的腾讯云环境中,通过腾讯云的对等连接打通,通过dolphinscheduler调度datax离线抽取数据和SQL计算汇总,还有在大股东的特有的Flink集群环境,该环境开发了flink开发程序包部署,实时…

ARP表、MAC表、路由表的区别和各自作用

文章目录 ARP表、MAC表、路由表的区别和各自作用同一网络内:ARP表request - 请求reply - 响应 MAC地址在同一网络内,交换机如何工作? 不同网络路由表不同网络通信流程PC1到路由器路由器到PC2流程图 简短总结 ARP表、MAC表、路由表的区别和各自作用 拓扑图如下: 同一网络内:…

第七课 Unity编辑器创建的资源优化_UI篇(UGUI)

上期我们学习了简单的Scene优化,接下来我们继续编辑器创建资源的UGUI优化 UI篇(UGUI) 优化UGUI应从哪些方面入手? 可以从CPU和GPU两方面考虑,CPU方面,避免触发或减少Canvas的Rebuild和Rebatch&#xff0c…