Python模块和包:sys模块、os模块和变量函数的使用
文章目录
- 模块(module)
- 引入外部模块
- 引入部分内容
- 包 (package)
- 示例代码
- 开箱即用
- sys模块
- sys.argv
- sys.modules
- sys.path
- sys.platform
- sys.exit()
- os模块
- os.environ
- os.system()
- os模块中的变量、函数和类
- 测试代码
- 模块中的变量和函数的使用
- 总结:
- python精品专栏推荐
- python基础知识(0基础入门)
- python爬虫知识
模块(module)
模块化指将一个完整的程序分解为一个一个小的模块,通过将模块组合,来搭建出一个完整的程序。模块化具有方便开发、维护和复用的优点。在Python中,每个py文件就是一个模块。
引入外部模块
在一个模块中引入外部模块有两种方式:import 模块名
和 import 模块名 as 模块别名
。后者可以引入同一模块多次,但实例只会创建一个。import语句可以在程序的任何位置调用,但一般情况下,应该统一写在程序开头。在每个模块内部都会有一个__name__
属性,通过这个属性可以获取到模块的名字。__name__
值为__main__
的模块是主模块,也是我们直接通过python执行的模块。
引入部分内容
也可以只引入模块中的部分内容,语法为from 模块名 import 变量,变量....
。可以为引入的变量使用别名,语法为from 模块名 import 变量 as 别名
。
包 (package)
包是由多个模块组成的一个文件夹。当一个模块的代码过多时,或需要将一个模块分解为多个模块时,就需要使用到包。在包中需要一个__init__.py
文件,这个文件可以包含有包中的主要内容。
示例代码
以下是一些示例代码:
# 引入test_module模块,并指定别名test
import test_module as test# 访问模块中的变量
print(test.a, test.b)# 创建Person的实例p
p = test.Person()
print(p.name)# 只引入模块中的特定部分
from m import Person,test# 引入到模块中所有内容,不推荐使用
from m import *# 为引入的变量使用别名
from m import test2 as new_test2# 引入包hello中的模块
from hello import a,bprint(a.c)
print(b.d)
注意:__pycache__
是模块的缓存文件,可以用来提高程序运行的性能。
# 模块缓存文件
__pycache__ 是模块的缓存文件。在Python中,代码在执行前需要被解析器转换为机器码,然后再执行。为了提高程序的运行性能,Python会在第一次编译后将代码保存到一个缓存文件中。下次加载该模块时,就可以直接加载缓存中编译好的代码,而不需要重新编译。例子:
# 引入math模块
import math# 调用math模块中的函数
print(math.sqrt(16))# 输出结果:4.0注意:在实际编写代码时,应该根据实际情况选择引入模块的方式,避免引入不必要的内容,以减少内存占用和提高代码的可读性。
以上是关于模块和包的相关内容。使用模块化可以使代码更加清晰、易于维护和复用。同时,包的使用可以将大型程序分解为更小的模块,便于管理和组织代码。编写模块和包的时候,要注意命名规范,并合理选择引入模块的方式。
当一个模块被导入时,Python会执行该模块中的所有顶级代码(即不在任何函数、类或条件语句中的代码)。这通常用于初始化模块中的变量、定义函数和类等操作。
示例代码:
# module.py
print("This is a module.")def greet(name):print(f"Hello, {name}!")class Person:def __init__(self, name):self.name = name# main.py
import moduleprint("This is the main module.")module.greet("Alice")p = module.Person("Bob")
print(p.name)
运行 main.py
输出:
This is a module.
This is the main module.
Hello, Alice!
Bob
可以看到,当 main.py
导入 module
模块时,先执行了 module.py
中的顶级代码,然后才继续执行 main.py
中的代码。
此外,可以使用 if __name__ == "__main__":
来判断当前模块是否被直接执行。这样可以使模块既可以作为独立的程序执行,又可以被其他模块导入和使用。
示例代码:
# module.py
def square(x):return x * xif __name__ == "__main__":# 当前模块被直接执行# 执行一些测试代码print(square(5))print(square(10))
可以单独执行 module.py
,也可以在其他模块中导入并使用 square
函数。当作为独立程序执行时,测试代码会被执行;当作为模块导入时,测试代码不会被执行。
好的,我将按照要求整理这篇文章,格式为Markdown格式。请稍等片刻。
开箱即用
为了实现开箱即用的思想,Python中为我们提供了一个模块的标准库。在这个标准库中,有很多很强大的模块我们可以直接使用,并且标准库会随Python的安装一同安装。
sys模块
sys模块提供了一些变量和函数,使我们可以获取到Python解析器的信息或者通过函数来操作Python解析器。我们可以引入sys模块:
import sys
sys.argv
sys.argv用于获取执行代码时,命令行中所包含的参数。该属性是一个列表,列表中保存了当前命令的所有参数。例如:
print(sys.argv)
sys.modules
sys.modules用于获取当前程序中引入的所有模块。modules是一个字典,字典的key是模块的名字,字典的value是模块对象。我们可以使用pprint模块对其进行格式化输出。例如:
import pprint
pprint.pprint(sys.modules)
sys.path
sys.path是一个列表,列表中保存的是模块的搜索路径。例如:
pprint.pprint(sys.path)
sys.platform
sys.platform表示当前Python运行的平台。例如:
print(sys.platform)
sys.exit()
sys.exit()函数用于退出程序。可以在括号中添加字符串作为退出时的提示信息。例如:
sys.exit('程序出现异常,结束!')
print('hello')
os模块
os模块让我们可以对操作系统进行访问。我们可以引入os模块:
import os
os.environ
通过os.environ属性可以获取到系统的环境变量。例如:
pprint.pprint(os.environ['path'])
os.system()
os.system()函数可以用来执行操作系统的命令。例如,可以执行dir
命令查看当前目录的文件列表:
os.system('dir')
os模块中的变量、函数和类
我们可以在模块中定义变量、函数和类,并在其他地方使用。例如:
a = 10
b = 20_c = 30 # 添加了_的变量,只能在模块内部访问def test():print('test')def test2():print('test2')class Person:def __init__(self):self.name = '孙悟空'
测试代码
我们可以编写一些测试代码来验证模块的功能。这部分代码只有当当前文件作为主模块时才会执行,而当模块被其他模块引入时不会执行。我们可以通过__name__
属性来检查当前模块是否是主模块。
if __name__ == '__main__':test()test2()p = Person()print(p.name)
模块中的变量和函数的使用
在模块中定义的变量和函数可以在其他地方进行使用。例如,假设我们将上述代码保存为一个名为example.py
的模块文件:
# example.pya = 10
b = 20_c = 30def test():print('test')def test2():print('test2')class Person:def __init__(self):self.name = '孙悟空'
然后,在另一个Python脚本中,我们可以引入该模块并使用其中定义的变量和函数:
# main.pyimport exampleprint(example.a)
print(example.b)example.test()
example.test2()p = example.Person()
print(p.name)
运行main.py
,将会输出以下结果:
10
20
test
test2
孙悟空
这样,我们就可以在模块中封装一些常用的代码,并在其他地方进行复用。
总结:
- 使用
sys
模块可以获取到Python解析器的信息和操作Python解析器。 - 使用
os
模块可以对操作系统进行访问,包括获取系统环境变量和执行系统命令。 - 在模块中定义的变量、函数和类可以在其他地方进行使用。
- 可以通过
if __name__ == '__main__':
来编写测试代码,只有当模块作为主模块运行时才会执行。
python精品专栏推荐
python基础知识(0基础入门)
【python基础知识】0.print()函数
【python基础知识】1.数据类型、数据应用、数据转换
【python基础知识】2.if条件判断与条件嵌套
【python基础知识】3.input()函数
【python基础知识】4.列表和字典
【python基础知识】5.for循环和while循环
【python基础知识】6.布尔值和四种语句(break、continue、pass、else)
【python基础知识】7.实操-用Python实现“文字PK”小游戏(一)
【python基础知识】7.实操-用Python实现“文字PK”小游戏(二)
【python基础知识】8.编程思维:如何解决问题-思维篇
【python基础知识】9.函数的定义和调用
【python基础知识】10.用函数编写程序 - 实操篇
【python基础知识】10.用Python实现石头剪刀布小游戏-函数实操篇
【python基础知识】11.如何debug -常见报错原因及排查思路 - 思维篇
【python基础知识】12.类与对象(一)
【python基础知识】12.类与对象(二)
【python基础知识】13.类与对象(三)
【python基础知识】13.类与对象(四)
【python基础知识】14.图书管理系统的搭建(类与对象实操)
【python基础知识】15.编码基础知识
【python基础知识】16.文件读写基础及操作
【python基础知识】16.“古诗默写题”的python实现(文件读写和编码-实操篇)
【python基础知识】17.模块的概念以及如何引入
【python基础知识】18.实操-使用python自动群发邮件
【python基础知识】19.产品思维以及流程图的使用 - 思维篇
【python基础知识】20.“午饭吃什么”的python实现(产品思维-实操篇)
【python基础知识】21.高效偷懒的正确打开方式-毕业篇
【python文件处理】CSV文件的读取、处理、写入
【python文件处理】Excel自动处理(使用 openpyxl)
【python文件处理】-excel格式处理
python爬虫知识
【python爬虫】1.爬虫基础知识
【python爬虫】2.网页基础知识
【python爬虫】3.爬虫初体验(BeautifulSoup解析)
【python爬虫】4.爬虫实操(菜品爬取)
【python爬虫】5.爬虫实操(歌词爬取)
【python爬虫】6.爬虫实操(带参数请求数据)
【python爬虫】7.爬到的数据存到哪里?
【python爬虫】8.温故而知新
【python爬虫】9.带着小饼干登录(cookies)
【python爬虫】10.指挥浏览器自动工作(selenium)
【python爬虫】11.让爬虫按时向你汇报
【python爬虫】12.建立你的爬虫大军
【python爬虫】13.吃什么不会胖(爬虫实操练习)
【python爬虫】14.Scrapy框架讲解
【python爬虫】15.Scrapy框架实战(热门职位爬取)
【python爬虫】16.爬虫知识点总结复习
相关文章:
Python模块和包:sys模块、os模块和变量函数的使用
文章目录 模块(module)引入外部模块引入部分内容包 (package)示例代码开箱即用sys模块sys.argvsys.modulessys.pathsys.platformsys.exit() os模块os.environos.system()os模块中的变量、函数和类 测试代码模块中的变量和函数的使用 总结:pyt…...

计算机软件工程毕业设计题目推荐
文章目录 0 简介1 如何选题2 最新软件工程毕设选题3 最后 0 简介 学长搜集分享最新的软件工程业专业毕设选题,难度适中,适合作为毕业设计,大家参考。 学长整理的题目标准: 相对容易工作量达标题目新颖 1 如何选题 最近非常多的…...

嵌入式学习笔记(25)串口通信的基本原理
三根通信线:Tx Rx GND (1)任何通信都要有信息作为传输载体,或者有线的或则无线的。 (2)串口通信时有线通信,是通过串口线来通信的。 (3)串口通信最少需要2根ÿ…...
c++学习第十三
1)循环引用的案例及解决办法: #include <iostream> #include <memory> using namespace std; class A;class B { public:B(){cout<<"B constructor---"<<endl;}~B(){cout<<"B deconstructor----"<<endl;}std::weak_…...

java复习-线程的同步和死锁
线程的同步和死锁 同步问题引出 当多个线程访问同一资源时,会出现不同步问题。比如当票贩子A(线程A)已经通过了“判断”,但由于网络延迟,暂未修改票数的间隔时间内,票贩子B(线程B)…...
Qt指示器设置
目录 1. 样式设置 2. 行为设置 3. 交互设置 创建一个进度指示器控件 在Qt中设置指示器(Indicator)的外观和行为通常需要操作相关部件的属性和样式表。以下是如何在Qt中设置指示器的一些常见方式: 1. 样式设置 你可以使用样式表…...

计算机网络第四节 数据链路层
一,引入数据链路层的目的 1.目的意义 数据链路层是体系结构中的第二层; 从发送端来讲,物理层可以将数据链路层交付下来的数据,装换成光,电信号发送到传输介质上了 从接收端来讲,物理层能将传输介质的光&…...

Vue.js not detected解决方法
扩展程序》管理扩展程序》详情》允许访问文件地址打开...

Window10安装PHP7.4
1. 下载PHP 7 首先需要下载PHP 7的安装包,可以从PHP官网(https://www.php.net/downloads.php)或者Windows下的PHP官网(http://windows.php.net/download/)下载Windows版本的PHP 7安装包。根据自己的系统架构ÿ…...

【C++刷题】二叉树进阶刷题
根据二叉树创建字符串 class Solution { public:/** ()的省略有两种情况* 1.左右都为空,省略* 2.左子树不为空,右子树为空,省略*/string tree2str(TreeNode* root){string s;if(root nullptr){return s;}s to_string(root->val);if(root…...
有效的数独
有效的数独 题目: 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。示例 1: 输…...
Vue导航守卫beforeRouteEnter,beforeRouteUpdate,beforeRouteLeave
Vue导航守卫以我自己的理解就是监听页面进入,修改,和离开的功能。每个守卫接受三个参数 to: Route: 即将要进入的目标路由对象 from: Route: 当前导航正要离开的路由 next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。 next(): 进行…...

小红书《乡村振兴战略下传统村落文化旅游设计》中南大许少辉八一新著
小红书《乡村振兴战略下传统村落文化旅游设计》中南大许少辉八一新著...

Android13 下拉菜单栏中添加快捷截图按钮
Android 13 原生系统下拉状态栏中是没有快捷截图按钮,现在需要添加快捷截图功能。 添加快捷截图功能后的效果图: 涉及修改的文件如下: modified: vendor/mediatek/proprietary/packages/apps/SystemUI/res/values/config.xml modified: vendor/mediatek/proprietary/…...

GFS文件系统
GFS 分布式文件系统 GlusterFS简介 GlusterFS 是一个开源的分布式文件系统。 由存储服务器、客户端以及NFS/Samba 存储网关(可选,根据需要选择使用)组成。 没有元数据服务器组件,这有助于提升整个系统的性能、可靠性和稳定性。 …...

22 相交链表
相交链表 题解1 快慢双指针改进 (acb bca)题解2 哈希表(偷懒) 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 题目数据 保证 整个链式结构中不存在环。 注意ÿ…...

简历(快速上手)
简历 文章目录 简历简历模板:排版上:内容上:沟通上: 简历在面试中起到关键作用 网申,HR只会花10秒多来看一下 内推,如果简历没优势就只能pass 简历模板: ⽊及简历(推荐! ) : https://resume.mdedit.online 排版上: 尽量简洁,…...

wpf复制xaml及其cs窗体到其他项目 添加现有项,选 .xaml.cs,点添加即可。VS2022
添加现有项,选 LoadingWindow.xaml.cs,点添加即可。...

在线旅游平台步入新时代,携程如何走出自己的路?
今年旅游从线下到线上全方位火了。有统计数据,一季度,光是抖音,旅游达人发布视频数量就高达175万条,播放量1350亿次,收获27亿次点赞。在这一趋势下,许多“不出名”的景区和酒店借势抖音达人完成“出圈”。短…...
java中feign远程调用底层是用Hystrix作为熔断器吗?
在较新的版本中,Feign 默认使用 OpenFeign 作为远程调用的底层实现,并且集成了 Netflix Hystrix 作为熔断器。然而,需要注意的是,自 Feign 10.x 版本开始,默认已不再集成 Hystrix。 在 Feign 中,Hystrix 被…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
Python 高效图像帧提取与视频编码:实战指南
Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...
区块链技术概述
区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...