详解 Python 文件: .py、.ipynb、.pyi、.pyc、​.pyd !

2023-10-26

这是「进击的Coder」的第 864 篇技术分享

来源:麦叔编程

今天同事给我扔了一个.pyd文件,说让我跑个数据。然后我就傻了。。

不知道多少粉丝小伙伴会 run .pyd 代码文件?如果你也懵懵的,请继续往下读吧。。

今天科普下各类Python代码文件的后缀,给各位Python开发“扫扫盲”。

 .py

最常见的Python代码文件后缀名,官方称Python 源代码文件

不用过多解释了~

 .ipynb

这个还是比较常见的,.ipynbJupyter Notebook文件的扩展名,它代表"IPython Notebook"。

1075c4c1b00aae4974877c12e826b485.png

学过数据分析,机器学习,深度学习的同学一定不陌生!

 .pyi

.pyi文件是Python中的类型提示文件,用于提供代码的静态类型信息。

一般用于帮助开发人员进行类型检查静态分析

示例代码:

# hellp.pyi

def hello(name: str) -> None:
    print(f"hello {name}")

.pyi文件的命名约定通常与相应的.py文件相同,以便它们可以被自动关联在一起。

 .pyc

.pycPython字节码文件的扩展名,用于存储已编译的Python源代码的中间表示形式,因为是二进制文件所以我们无法正常阅读里面的代码。

dacbd373974941da6c085d0a2a950865.png

.pyc文件包含了已编译的字节码,它可以更快地被Python解释器加载和执行,因为解释器无需再次编译源代码。

 .pyd

.pydPython扩展模块的扩展名,用于表示使用CC++编写的二进制Python扩展模块文件。

.pyd文件是编译后的二进制文件,它包含了编译后的扩展模块代码以及与Python解释器交互所需的信息。

此外,.pyd文件通过import语句在Python中导入和使用,就像导入普通的Python模块一样。

由于CC++的执行速度通常比纯Python代码快,可以使用扩展模块来优化Python代码的性能,尤其是对于计算密集型任务。

d944c1b09f2f3191eeea4049c46a21aa.png

 .pyw

.pywPython窗口化脚本文件的扩展名。

它表示一种特殊类型的Python脚本文件,用于创建没有命令行界面(即控制台窗口)的窗口化应用程序。

一般情况下,运行Python脚本会打开一个命令行窗口,其中显示脚本输出和接受用户输入。但是,对于某些应用程序,如图形用户界面(GUI)应用程序,不需要命令行界面,而是希望在窗口中显示交互界面。这时就可以使用.pyw文件。

示例代码:

# click_button.pyw

import tkinter as tk

def button_click():
    label.config(text="Button Clicked!")

window = tk.Tk()
button = tk.Button(window, text="Click Me", command=button_click)
button.pack()

label = tk.Label(window, text="Hello, World!")
label.pack()

window.mainloop()

# .pyx

.pyxCython源代码文件的扩展名。

Cython是一种编译型的静态类型扩展语言,它允许在Python代码中使用C语言的语法和特性,以提高性能并与C语言库进行交互。

我对比了下Cython与普通python的运行速度:

fb.pyx(需使用cythonize命令进行编译)

import fb
import timeit

def fibonacci(n):
if n <= 0:
raise ValueError("n必须是正整数")

if n == 1:
return 0
elif n == 2:
return 1
else:
        a, b = 0, 1
for _ in range(3, n + 1):
            a, b = b, a + b
return b

# 纯Python版本
python_time = timeit.timeit("fibonacci(300)", setup="from __main__ import fibonacci", number=1000000)

# Cython版本
cython_time = timeit.timeit("fb.fibonacci(300)", setup="import fb", number=1000000)

print("纯Python版本执行时间:", python_time)
print("Cython版本执行时间:", cython_time)

run.py

import fb
import timeit

def fibonacci(n):
if n <= 0:
raise ValueError("n必须是正整数")

if n == 1:
return 0
elif n == 2:
return 1
else:
        a, b = 0, 1
for _ in range(3, n + 1):
            a, b = b, a + b
return b

# 纯Python版本
python_time = timeit.timeit("fibonacci(300)", setup="from __main__ import fibonacci", number=1000000)

# Cython版本
cython_time = timeit.timeit("fb.fibonacci(300)", setup="import fb", number=1000000)

print("纯Python版本执行时间:", python_time)
print("Cython版本执行时间:", cython_time)

得出结果:

纯Python版本执行时间: 12.391942400000516
Cython版本执行时间: 6.574918199999956

在这种计算密集任务情况下,Cython比普通Python效率快了近一倍。

2f95f8807cb8014bd33e7c8ce5f2befc.png

End

欢迎大家加入【ChatGPT&AI 变现圈】,零门槛掌握 AI 神器!我们带你从小白到高手,解锁智能问答、自动化创作、技术变现的无限可能。与我们共同成长,开启 AI 新征程!立即行动,未来已来!(详情请戳:知识星球:ChatGPT&AI 变现圈,正式上线!

扫码加入:

22ad0e1bb1d92c5a1ed4bcd540daf92c.jpeg

475ac2a5264bd546b148e988400dcaf0.png

点个在看你最好看

outside_default.png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

详解 Python 文件: .py、.ipynb、.pyi、.pyc、​.pyd ! 的相关文章

随机推荐

  • Deep Learning学习 之 CNN代码解析(MATLAB)

    MATLAB实现CNN一般会用到deepLearnToolbox master 但是根据Git上面的说明 现在已经停止更新了 而且有很多功能也不太能够支持 具体的请大家自习看一看Git中的README deepLearnToolbox ma
  • Neo4j数据建模优化:标签 VS 索引

    原文链接 http graphaware com neo4j 2015 01 16 neo4j graph model design labels versus indexed properties html 在设计Neoj图形化数据库的时
  • Docker daemon日志的位置

    Docker daemon日志的位置 根据系统不同各不相同 Ubuntu var log upstart docker log Boot2Docker var log docker log Debian GNU Linux var log
  • SeetaFaceEngine系列1:Face Detection编译和使用

    SeetaFace 根据GitHub上的介绍 就是一个开源的人脸检测 矫正和识别的开源库 是采用C 来编写的 并且是在CPU上执行的 没有用到GPU 但是可以用SSE或者OpenMP来加速 整个库分为三部分 SeetaFace Detect
  • Python Numpy 关于 linspace()函数 使用详解(全)

    目录 前言 1 函数讲解 2 实战讲解 前言 用plt画图的时候 偶尔会看到这个函数的出现 索性直接深入源码实战进行复现 主要功能 在线性区域中生成等间距的序列 原先在Numpy中可以用numpy arange 但对于浮点数会有精度丢失 因
  • web前端开发自学路线是怎样的?html+css+JavaScript的学习方法

    不废话 直接干货 学习前端的几个阶段 一阶段 html标签 html5新增标签 css样式 css3样式 媒体查询等 二阶段 JavaScript jQuery ajax 面向对象 http传输协议等 三阶段 canvas js高级应用 J
  • C++核心:函数提高(函数默认参数、函数占占位参数、函数重载)

    1 函数默认参数 在C 中 函数的形参列表中的形参是可以有默认值的 返回值类型 函数名 参数 默认值 int func int a int b 10 int c 10 return a b c 1 如果某个位置参数有默认值 那么从这个位置往
  • 数据显示为Ljava.lang.Object;@问题

    那是因为你从数据库读出数据后 存入到list集合上时 如果你没有指定要存入的数据的类型 系统会自动给你赋一个object类型 他是所以类的鼻祖 你取出数据要进行转型 转化成你自己想要的数据类型才能显示
  • pod install 报错 [!] Oh no, an error occurred.

    今天在写react native与原生Swift交互的demo时 新建了一个xcode工程SwiftRnApp执行pod install时报错 点开上面的链接 查看CocoaPods issues 说是要把xcodeproj的版本更新到 1
  • 制作立体图像实用软件:3DMasterKit 10.7 Crack

    3DMasterKit 软件专为创建具有逼真 3D 和运动效果的光栅图片而设计 翻转 动画 变形和缩放 打印机 广告工作室 摄影工作室和摄影师将发现 3DMasterKit 是一种有用且经济高效的解决方案 可将其业务扩展到新的维度 提高生成
  • 电脑知识大全菜鸟必备,学计算机零基础入门知识教程

    电脑在我们生活中的重要性不言而喻 如何保证自己的电脑流畅好用 对于很多用户来说是非常重要的 作为一个理科男和IT从业者 我很在意我的电脑 我会定期整理 保持系统绝对流畅好用 那么本文就分享几个保持电脑流畅好用的小技巧和习惯 希望对你有所帮助
  • jupyter python注释多行

    在jupyter notebook中批量注释多行代码 解除注释也是同样的操作 ctrl
  • 如何进行高效迅速的CodeReview

    背景 第一次参加CodeReview不知道该如何去做 也不知道为什么去做 后来参加多了 慢慢了解了CodeReview的意义 也同时发现CodeReview的效率问题 有时候会发现一个CodeReview时间很长 参与者会觉得煎熬和浪费时间
  • 在PADS中如何导出PCB封装库

    1 在 pads layout 下打开 PADS 文件 2 file library Create New Lib 建立一个自己的PCB DECAL 库 3 将 PCB 缩小到可以全部显示 pcb layout 4 按右键 选择 Selec
  • Frp某场景下实现多层代理

    注 由于传播 利用本文章所提供的信息而造成的任何直接或者间接的后果及损失 均由使用者本人负责 本文作者不为此承担任何责任 一旦造成后果请自行承担 目录 frp简介 部分配置参数说明 实验场景 实验场景 实验环境 实验步骤 第一层隧道 第二层
  • ceph学习(故障恢复)——mon全部故障,从osd中恢复集群

    在生产环境中 ceph集群要求最少配置3个MON 一般情况下很少出现3个MON同时挂掉的情况 但是也不排除出现这种情况的可能 如果集群中的所有MON都损坏了 是不是集群数据就丢失了呢 能不能恢复集群 当然是可以的 ceph中国的一位开发者写
  • Python+Selenium基础篇之5-第一个完整的自动化测试脚本

    前面文章 我们介绍了如何采用XPath表达式去定位网页元素 在掌握了如何抓取或者如何书写精确的XPath表达式后 我们可以开始写自己的第一个真正意义上的webui 自动化测试脚本 就相当于 你在学习Python 如何在控制台打印Hello
  • 计蒜客T1488——旋转单词

    如题 抽象本题的重点在于以下几点 1 输入一个字符串并匹配一个专属的数字 2 将每一个字符串后n位按照原顺序前置 对于要点1 此处采用自定义类型压入vector解决 对于要点2 采用双循环遍历解决 具体见代码 include
  • LeetCode 练习——101. 对称二叉树

    文章目录 1 题目描述 2 思路 2 1 代码 2 2 测试结果 3 总结 1 题目描述 对称二叉树 给你一个二叉树的根节点 root 检查它是否轴对称 示例 1 输入 root 1 2 2 3 4 4 3 输出 true 示例 2 输入
  • 详解 Python 文件: .py、.ipynb、.pyi、.pyc、​.pyd !

    这是 进击的Coder 的第 864 篇技术分享 来源 麦叔编程 今天同事给我扔了一个 pyd文件 说让我跑个数据 然后我就傻了 不知道多少粉丝小伙伴会 run pyd 代码文件 如果你也懵懵的 请继续往下读吧 今天科普下各类Python代