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

Python居然有这么多文件扩展

  • B站:啥都会一点的研究生
  • 公众号:啥都会一点的研究生

大部分Python开发者打过最多的交道就是.py文件,但你不知道的是还有很多其他文件扩展,本期整理了9个不同py扩展文件具体含义与用法,花几分钟一起看看吧

.py 文件:标准Python源代码

每位了解Python的开发者都会将代码写入 .py 文件,然后通常这样执行

python your_py_file.py

简单来说,.py 文件是可执行的纯文本文件,包含Python代码

.ipynb 文件:交互式Jupyter Notebook

.ipynb 扩展名保存的Jupyter的Python文件提供了一个交互式环境,可以在单个文档中结合代码执行、数据可视化和叙述性文本

.pyi 文件:Python类型提示与接口文件

Python接口文件(带有 .pyi 扩展名的文件),或称为Python存根文件,在通过类型提示增强Python代码方面有着关键作用

例如,有一个名为 test.py 的Python文件,包含以下程序:

def multiply(a, b):return a * bprint(multiply(2.2, 10))

IDE或其他Python类型检查工具不会对上述程序提出任何问题,因为我们没有给它们任何类型提示

让我们创建一个与 .py 文件同名.pyi 文件

将以下代码写入 test.pyi 文件

def multiply(a: int, b: int) -> int: ...

如果再次打开 test.py 文件,IDE会提醒现在类型不匹配

这使得程序类型更安全,但大家可能会问为什么不直接在原始Python文件(.py 文件)中添加类型提示?

对于我们的示例,毫无疑问.pyi 文件并不是真正必要,可以直接在原始函数定义中声明 int 类型

但了解 .pyi 的概念仍然有意义

因为将类型注释与实现分离可以使主代码保持清洁并专注于功能

更重要的是,为了向后兼容性,存根文件允许在不修改原始源文件的情况下向旧版代码添加类型提示。毕竟,修改其他人编写的旧代码是个脑阔疼的问题

.pyc 文件:编译的Python字节码

当Python脚本作为模块导入时,解释器将它们编译为字节码,并将其保存为 .pyc 文件,以通过跳过不必要的重新编译来提高模块加载时间

这种类型的文件由解释器自动生成,包含字节码,这是源代码(相对的 .py 文件)的更低级别、平台无关的表示

字节码是Python虚拟机解释和执行的内容

鉴于它以二进制格式保存且不可读,在大多数情况下不需要太担心 .pyc 文件

.pyw 文件:Windows GUI Python脚本

Python也是一种用于图形用户界面(GUI)开发的编程语言

.pyw 文件是为Windows GUI设计的特定类型的Python脚本文件,这些文件用于在不打开命令提示符窗口的情况下运行,使它们成为GUI应用程序的理想选择

创建 .pyw 文件很直接——只需将脚本保存为 .pyw 扩展名而不是 .py.pyw 文件可以像 .py 文件一样直接运行

例如,可以通过tkinter编写一个简单的UI组件并将其保存为 .pyw 文件

import tkinter as tkdef greet():label.config(text=f"Hello, {entry.get()}!")root = tk.Tk()
root.title("Greeting App")label = tk.Label(root, text="Enter your name:")
label.pack()entry = tk.Entry(root)
entry.pack()button = tk.Button(root, text="Greet", command=greet)
button.pack()root.mainloop()

要执行它,可以在Windows资源管理器中双击文件,或者使用 pythonw 从命令行运行它

pythonw example.pyw

.pxd 和 .pyx 文件:Cython源代码和声明文件

Cython是一种编程语言,使编写Python的C扩展变得和Python本身一样容易。它是Python的超集,旨在将大部分用Python编写的代码提供类似C的性能

Cython使用的两种重要文件类型是 .pyx.pxd 文件

  • .pyx :包含主要实现代码的Cython源文件。.pyx 文件中的代码可以是Python和类似C的语法混合,允许编写与Python无缝集成的高性能代码
  • .pxd :这些是Cython声明文件,类似于C头文件。包含类型定义、跨多个 .pyx 文件共享的函数、变量和类的声明

.pyd 文件:Python动态模块

.pyd 文件是Python动态模块(注意它们不是Cython的 .pxd 文件)

这些文件等同于Windows上的DLL(动态链接库)。允许Python与编译后的C或C++代码接口,实现高性能和低级系统交互

要创建 .pyd 文件,通常可以以C或C++编写代码,然后使用针对Windows平台的编译器进行编译。该过程通常涉及使用Microsoft Visual Studio或MinGW等工具

在游戏开发中,高性能的游戏引擎和图形库经常使用 .pyd 文件进行渲染和物理计算

.pyo 文件:优化的Python字节码文件

.pyo 文件用于存储优化的字节码,通常在Python使用优化标志(-O)运行时创建

例如,在Python 3.5之前,以下列方式运行名为 test.py 的Python脚本将生成一个 test.pyo 文件

注意: 从Python 3.5开始,.pyo 文件不再使用,优化信息存储在 .pyc 文件中

正经的知识又增加了。我是啥都生,下次再见

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Docker手动在虚拟机上部署前端、后端和数据库
  • SAP LE学习笔记04 - MM与WM跨模块收货到仓库的流程中 如何既创建TR又同时立即在前台创建TO
  • jmeter安装及环境变量配置、Jmeter目录介绍和界面详解
  • Pcie学习笔记(24)
  • Mysql原理与调优-Mysql的内存结构
  • Flask框架探索:轻量级与灵活性的完美结合
  • 入门mysql数据库
  • 空状态设计教程:连接用户体验的桥梁
  • 制造企业MES系统质检管理的应用
  • 【杂乱算法】前缀和与差分
  • [Linux#42][线程] 锁的接口 | 原理 | 封装与运用 | 线程安全
  • 使用 Vue 官方脚手架初始化 Vue3 项目
  • 基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(二)---ROS2与UE5进行图像数据传输
  • 多维的vector也可以sort!力扣刷题-合并区间有感
  • Esxi 7.0 安装windows xp 问题汇总
  • __proto__ 和 prototype的关系
  • Angular4 模板式表单用法以及验证
  • Apache Pulsar 2.1 重磅发布
  • Apache Spark Streaming 使用实例
  • Create React App 使用
  • CSS相对定位
  • Django 博客开发教程 16 - 统计文章阅读量
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • markdown编辑器简评
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • React-flux杂记
  • spring security oauth2 password授权模式
  • 大主子表关联的性能优化方法
  • 基于 Babel 的 npm 包最小化设置
  • 前端面试之CSS3新特性
  • 消息队列系列二(IOT中消息队列的应用)
  • 一份游戏开发学习路线
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • gunicorn工作原理
  • NLPIR智能语义技术让大数据挖掘更简单
  • 阿里云ACE认证之理解CDN技术
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • #NOIP 2014# day.1 T2 联合权值
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (35)远程识别(又称无人机识别)(二)
  • (C#)一个最简单的链表类
  • (javascript)再说document.body.scrollTop的使用问题
  • (六)Flink 窗口计算
  • (十)T检验-第一部分
  • (四)opengl函数加载和错误处理
  • (详细文档!)javaswing图书管理系统+mysql数据库
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转) 深度模型优化性能 调参
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .Net CF下精确的计时器