【Python】模块、包
模块
Python模块(Module),是一个Python文件,以.py结尾。模块能定义函数,类和变量,模块里也能保护可执行的代码。
不同模块,同名的功能,如果都被导入,那么后者会覆盖前者
模块导入方式
模块在使用前需要先导入,导入的语法如下:
[from 模块名] import [模块 | 类 | 变量 | 函数 | *] [as 别名]
常用的组合形式如:
-
import 模块名
import timeprint('begin') time.sleep(3) # 使程序睡眠3秒(阻塞) print('end') -
from 模块名 import 类、变量、方法等
from time import sleepprint('begin') sleep(3) # 使程序睡眠3秒(阻塞) print('end') -
from 模块名 import *
from time import *print('begin') sleep(3) # 使程序睡眠3秒(阻塞) print('end') -
import 模块名 as 别名
import time as tprint('begin') t.sleep(3) # 使程序睡眠3秒(阻塞) print('end') -
from 模块名 import 功能名 as 别名
from time import sleep as sprint('begin') s(3) # 使程序睡眠3秒(阻塞) print('end')
自定义模块
每个Python文件都可以作为一个模块,模块的名字就是文件的名字,也就是说自定义模块名必须符合标识符命名规则。
my_module.py
# 自定义模块
def test(x, y):return x * y
在主程序中导入
# 自定义模块
import my_moduleprint(my_module.test(9, 9))
测试模块
在实际开发中,当一个开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效果,会自行在py文件中添加一些测试信息,例如,在my_module.py文件中添加如下测试代码:
# 自定义模块
def test(x, y):return x * yprint(test(1, 3)) # 测试代码
问题:此时,无论是当前文件,还是其他已经导入了该模块的文件,在运行的时候都会自动执行test函数的调用
解决方法:在模块文件中使用if __name__ == '__main__':
def test(x, y):return x * yif __name__ == '__main__':print(test(1, 3))
__all__
如果一个模块文件中有__all__变量,当使用from xxx import *导入时,只能导入这个列表中的元素
my_module2.py
__all__ = ['test_1']def test_1():return 'test1'def test_2():return 'test2'
在程序中如下
# 自定义模块
from my_module2 import *print(test_1()) # 若改成print(test_2()),程序会报错
包
从物理上看,包就是一个文件夹,在该文件夹下包含了一个__init__.py文件,该文件夹可用于包含多个模块文件;从逻辑上看,包的本质依然是模块。

包的作用:当模块文件越来越多时,包可以帮助我们管理这些模块,包的作用就是
包含多个模块,但包的本质依然是模块
自定义包

导入方式
方式一
import my_package.my_module1
import my_package.my_module2my_package.my_module1.info_print1()
my_package.my_module2.info_print2()
方式二
from my_package import my_module1
from my_package import my_module2my_module1.info_print1()
my_module2.info_print2()
方式三
from my_package.my_module1 import info_print1
from my_package.my_module2 import info_print2info_print1()
info_print2()
其实和模块导入类似
在__init__.py文件中可以添加__all__ = [],来控制允许导入的模块列表,例如:
__all__ = ['my_module1']
必须是使用
from 包名 import *来导入才生效
安装第三方包
在Python程序的生态中,有许多非常多的第三方包(非Python官方),可以极大的帮助我们提高开发效率,如:
- 科学计算中常用的:numpy包
- 数据分析中常用的:pandas包
- 大数据计算中常用的:pyspark、apache-flink包
- 图形可视化常用的:matplotlib、pyecharts
- 人工智能常用的:tensorflow
安装命令:
pip install 包名称
由于pip是连接的国外网站进行包下载,下载速度可能会慢。可以通过如下命令,让其连接国内的网站进行包安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称
查看已安装的所有包
pip list
相关文章:
【Python】模块、包
模块 Python模块(Module),是一个Python文件,以.py结尾。模块能定义函数,类和变量,模块里也能保护可执行的代码。 不同模块,同名的功能,如果都被导入,那么后者会覆盖前者…...
CMAKE_CUDA_ARCHITECTURES针对Jetson Xavier或者Orin的设置
不同jetson设备对应不同的CMAKE_CUDA_ARCHITECTURES的设置,如下: # TX1, Nano ------ 53 # TX2 ------ 62 # AGX Xavier, NX Xavier ------ 72 # AGX Orin, NX Orin ----…...
sqlite3.OperationalError: unable to open database file解决方法
执行superset时,提示该错误:sqlite3.OperationalError: unable to open database file 由于superset里使用django设置sqlite3数据库。 应该属于django设置sqlite3数据库的问题: OperationalError: unable to open database file 原因 1&a…...
SSL核心概念 SSL类型级别
SSL:SSL(Secure Sockets Layer)即安全套接层,及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。 H…...
器件介绍TMP1826NGRR、TMP1826DGKR、TMP1827NGRR、TMP1075NDRLR数字温度传感器
一、TMP1826 具有 2Kb EEPROM 的 1-Wire、0.2C 精度温度传感器 器件介绍 TMP1826 是一款高精度、1-Wire 兼容的数字输出温度传感器,具有集成的 2Kb EEPROM 和 –55C 至150C 的宽工作温度范围。TMP1826 在 10C 至45C 的温度范围内提供 0.1C(典型值&#…...
抖店必须绑定抖音账号吗?聊6个抖店不为人知的小细节,别外传
我是王路飞。 现在做抖店,比如绑定一个抖音账号吗? 了解过抖店的朋友都知道,之前开通抖音小店,是需要绑定一个抖音号作为店铺的官方账号的。 而且属于硬性规定,必须要绑定,否则店铺无法正常运营。 但是…...
如何搭建智能家居系统并通过内网穿透实现远程控制家中设备
文章目录 前言1. 安装Home Assistant2. 配置Home Assistant3. 安装cpolar内网穿透3.1 windows系统3.2 Linux系统3.3 macOS系统 4. 映射Home Assistant端口5. 公网访问Home Assistant6. 固定公网地址6.1 保留一个固定二级子域名6.2 配置固定二级子域名 前言 Home Assistant&…...
【趣味随笔】手机参数你真的看懂了吗?
📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…...
微信小程序开发教学系列(4)- 数据绑定与事件处理
4. 数据绑定与事件处理 在微信小程序中,数据绑定和事件处理是非常重要的部分。数据绑定可以将数据和页面元素进行关联,实现数据的动态渲染;事件处理则是响应用户的操作,实现交互功能。本章节将详细介绍数据绑定和事件处理的基本原…...
C++避坑——most vexing parse问题
1."坑"的问题是什么? 先看一段代码: class Functor { public:void operator()(){std::cout << "我是线程的初始函数" << std::endl;} };int main() {std::thread t(Functor());// 强制高速编译器这是一个构造函数!t.j…...
利用lammps模拟蓝宝石在水润滑环境下的抛光
一 问题描述 蓝宝石(Al2O3)由于其独特的晶体结构,优异的物理化学特性,被广泛应用于航空航天等领域。高精尖的应用领域要求蓝宝石具有纳米级的表面粗糙度以及严格可控的亚表面缺陷。影响超精密加工最终性能的因素主要集中在工件表…...
3.BGP状态机和路由注入方式
BGP状态机 BGP路由的生成 不同于IGP路由协议,BGP自身并不会发现并计算产生路由,BGP将GP路由表中的路由注入到BGP路由表中,并通过Update报文传递给BGP对等体。 BGP注入路由的方式有两种: Networkimport-route与IGP协议相同,BGP支持根据已有的路由条目进行聚合,生成聚合路由…...
微信开发之一键创建微信群聊的技术实现
创建微信群 本接口为敏感接口,请查阅调用规范手册创建后,手机上不会显示该群,往该群主动发条消息手机即可显示。 请求URL: http://域名地址/createChatroom 请求方式: POST 请求头Headers: Content-T…...
设计模式二十:观察者模式(Observer Pattern)
定义了一种一对多的依赖关系,允许多个观察者(也称为订阅者)对象同时监听一个主题对象,当主题对象发生变化时,所有依赖于它的观察者都会收到通知并自动更新。 观察者模式的使用场景 观察者模式在许多场景中都可以发挥…...
Linux操作系统--CentOS使用初体验
我们安装好Linux的操作系统之后,下面就可以使用Linux操作系统了。我们一起来看看如何使用。 (1).桌面 我们在进入CentOS操作系统后可以发现一些和Windows操作系统相类似的情况。如:网络、时间显示、以及基本的软件等内容。 --创建文件、文件夹。 (2).操作终端 Linux中的终…...
搭建HAProxy + Keepalived高可用
安装 在四台虚拟机上,我们以如下方式搭建集群: 192.168.115.3 haproxykeepalived 192.168.115.4haproxykeepalived 192.168.115.5 nginx 192.168.115.6 nginx 在192.168.115.3 和192.168.115.4 上安装haproxy和keepalived(haproxy编译安装…...
使用Python爬虫定制化开发自己需要的数据集
在数据驱动的时代,获取准确、丰富的数据对于许多项目和业务至关重要。本文将介绍如何使用Python爬虫进行定制化开发,以满足个性化的数据需求,帮助你构建自己需要的数据集,为数据分析和应用提供有力支持。 1.确定数据需求和采集目…...
java八股文面试[java基础]——接口和抽象类的区别
知识来源: 【基础】接口和抽象类_哔哩哔哩_bilibili 【2023年面试】Java中抽象类和接口有什么区别_哔哩哔哩_bilibili 【23版面试突击】抽象类和接口的区别,类可以继承多个类么,接口可以继承多个接口么,类可以实现多个接口么?_…...
head 请求了解过吗?如何用 get 模拟 head 请求?不需要服务器返回数据,怎么实现?
HEAD请求是HTTP/1.1协议中定义的一个请求方法,与GET请求相似,但只请求目标URL的头部,不请求实际的数据或者说正文内容。其主要用途是: 检查资源是否存在。获取资源的元数据(如响应头中的Content-Length或Last-Modifie…...
Redis笔记——(狂神说)待续
Nosql概述 为什么要用NoSql? 1、单机mysql的年代:90年代,网站访问量小,很多使用静态网页html写的,服务器没压力。 当时瓶颈是:1)数据量太大一个机器放不下。2)数据的索引(BTree),一个机器内存也…...
改进人工势场多无人机三维航迹规划【附代码】
✨ 长期致力于航迹规划、多无人机、目标分配、人工势场算法、三维空间研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)多目标任务分配与人工势场基础&…...
OpenCode 对接实践:从独立进程到共享 Runtime 的架构演进
OpenCode 对接实践:从独立进程到共享 Runtime 的架构演进本文分享 HagiCode 集成 OpenCode AI 助手的完整实践,包括架构演进过程中的关键设计决策、遇到的坑以及最终解决方案。背景OpenCode 是一个开源的 AI 编码助手项目,托管在 GitHub 上。…...
壹:烧录Linux系统
名词解析:OTG:On-The-Go,含义:OTG 是一种 USB 的扩展功能,允许设备(如手机、开发板)在没有主机(如电脑)的情况下,既可以作为 USB 主机(Host&#…...
一文读懂STA(静态时序分析):定义、价值、应用及实操指南
在数字集成电路设计领域,时序性能是决定芯片能否稳定、高效运行的核心因素,而静态时序分析(Static Timing Analysis,简称STA)作为时序验证的核心手段,早已成为芯片设计流程中不可或缺的一环。无论是FPGA还是…...
ARM设备运行x86_64程序:Box64高效兼容方案深度解析
ARM设备运行x86_64程序:Box64高效兼容方案深度解析 【免费下载链接】box64 Box64 - Linux Userspace x86_64 Emulator with a twist, targeted at ARM64, RV64 and LoongArch Linux devices 项目地址: https://gitcode.com/gh_mirrors/bo/box64 你是否曾在AR…...
OBS高级计时器插件:如何高效管理直播时间的完整指南
OBS高级计时器插件:如何高效管理直播时间的完整指南 【免费下载链接】obs-advanced-timer 项目地址: https://gitcode.com/gh_mirrors/ob/obs-advanced-timer OBS高级计时器插件是专为OBS Studio用户设计的专业时间管理工具,通过6种智能计时模式…...
Qt WebEngine实战避坑:证书管理、代理设置与高DPI适配那些事儿
Qt WebEngine实战避坑指南:证书管理、代理配置与高DPI适配深度解析 在跨平台桌面应用开发领域,Qt WebEngine作为Chromium引擎的封装实现,为开发者提供了强大的Web内容嵌入能力。然而在实际项目落地过程中,开发者常会遇到三类典型问…...
Stack-on-a-budget:开发者必备的免费服务资源大全终极指南 [特殊字符]
Stack-on-a-budget:开发者必备的免费服务资源大全终极指南 🚀 【免费下载链接】stack-on-a-budget A collection of services with great free tiers for developers on a budget. Sponsored by Mockoon, the best mock API tool. https://mockoon.com …...
如何在iOS设备上快速安装TrollStore:TrollInstallerX完整使用指南
如何在iOS设备上快速安装TrollStore:TrollInstallerX完整使用指南 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX TrollInstallerX是一款专为iOS 14.0到16.6…...
先进制程EPE挑战:从系统误差到量测革命,如何驯服边缘位置误差
1. 从“理所当然”到“如履薄冰”:边缘位置误差如何成为先进制程的“隐形杀手”在半导体行业过去的黄金岁月里,工程师们有一个近乎奢侈的“共识”:芯片内部那些由光刻、刻蚀定义的特征边缘,可以被理所当然地看作是笔直且在不同工艺…...
