page contents

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

今天同事给我扔了一个.pyd文件,说让我跑个数据。然后我就傻了。。不知道多少粉丝小伙伴会run .pyd代码文件?如果你也懵懵的,请继续往下读吧。。今天科普下各类Python代码文件的后缀,给各位Python开发“扫扫盲”。

attachments-2024-06-ZPxmO7Nx667bad8017a15.jpg今天同事给我扔了一个.pyd文件,说让我跑个数据。然后我就傻了。。不知道多少粉丝小伙伴会run .pyd代码文件?如果你也懵懵的,请继续往下读吧。。今天科普下各类Python代码文件的后缀,给各位Python开发“扫扫盲”。

.py

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

不用过多解释了~

.ipynb

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

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

.pyi

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

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

示例代码:

hellp.pyi

def hello(name: str) -> None:

    print(f"hello {name}")

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

.pyc

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

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

.pyd

.pyd是Python扩展模块的扩展名,用于表示使用C或C++编写的二进制Python扩展模块文件。

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

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

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

.pyw

.pyw是Python窗口化脚本文件的扩展名。

它表示一种特殊类型的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

.pyx是Cython源代码文件的扩展名。

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

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

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

cdef int a, b, i

def fibonacci(n):

if n <= 0:

raise ValueError("n必须是正整数")

if n == 1:

return 0

elif n == 2:

return 1

else:

        a = 0

        b = 1

for i in range(3, n + 1):

            a, b = b, a + b

return b

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效率快了近一倍。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2024-06-26 13:56
  • 阅读 ( 43 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

1300 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1300 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章