1
tulongtou 2022-08-27 13:59:38 +08:00 via iPhone
去看 c 源码
|
2
westoy 2022-08-27 14:02:42 +08:00
|
3
zhuzhuaini OP @tulongtou
@westoy 为啥是 C 源码,而且我装完 python 之后 电脑中也没有一个名字叫 binascii.c 或者 binascii.cpp 这样的文件呀 难道 python 底层是去执行 C 语言了 而且这个 C 的源代码文件名还与 python 的包名不一样 比如 python 中包名叫 binascii.py 但是他对应的 C 可能叫 abc.c? 那去哪里可以找到这种对应关系呢 |
4
xiri 2022-08-27 14:42:22 +08:00 via Android
@zhuzhuaini cpython 解释器就是用 c 写的啊,一些标准库也用 c 来实现加快运行速度不是很正常嘛。
另外这些 c 源码并不是你运行的时候才去编译的,你安装的 python 里面就都是已经编译好了的链接库,所以找不到对应的.c 文件 |
5
zhuzhuaini OP @xiri 明白了 感谢回复!!谢谢解答
|
6
julyclyde 2022-08-29 13:32:34 +08:00
@zhuzhuaini 为什么用“难道”来问去执行 C 语言了这个事呢?
|
7
zhuzhuaini OP @julyclyde 因为我起先不知道 python 最后会转成 C...我以为和 C java 啥的一样呢
|
8
julyclyde 2022-08-30 10:40:58 +08:00
@zhuzhuaini 可以参考一下文档
https://docs.python.org/3/faq/general.html How do I obtain a copy of the Python source?¶ 这一段 不过标准库里面 C 语言那部分,和 python 那部分,确实不太一样。用 python 语言写的那些库,和使用者自己写的程序一样都是编译成 bytecode 然后被语言虚拟机执行的,和 JVM 类似 |
9
zhuzhuaini OP @julyclyde 嗯嗯 在看了~感谢解答
|
10
ipwx 2022-09-30 17:20:26 +08:00
@zhuzhuaini "因为我起先不知道 python 最后会转成 C"
这句话不对。Python 代码是由 Python 解释器运行的,是一个 C 语言写的虚拟机,模拟了某种指令集的 “CPU”。但是这种执行方式注定了 Python 大部分代码不够快,所谓 Python 也支持调用编译好的本机函数。标准库的很多函数都是用 C 写的预先编译好的函数。 |