一个一个来说吧( ゚∀。)
> “安装python某版本”是安装某版本解释器吗?
是的,一般都是指 https://python.org/ 上下载的某版本(这个解释器一般称为CPython,是解释器的官方实现,也有其他的解释器实现不过不是主流,刚接触Python的话其实并不需要详细了解)
> py文件可以直接执行是解释器现场解释?( ゚∀。)对运算资源消耗会不会比较大?
是的(实际上是先将源代码解析成字节码然后再执行字节码,导入模块的时候看到的__pycache__里的各种pyc文件就是缓存的解析后的字节码),由于Python的解释执行、动态类型等等性质,一般来说Python的运行速度在目前主流的编程语言中是出了名的慢( ゚∀。) 和C这种编译到机器码的语言更是没法比
可以参见这篇文章:https://jakevdp.github.io/blog/2014/05/09/why-python-is-slow/
> 下载全套.py和用包管理软件(例如pip)安装的有什么区别( ゚∀。)
都叫包管理软件了当然是为了方便管理(比如安装和卸载、指定或更新版本之类的),显然比手动下载复制一堆文件方便一些( ゚∀。)
有些包不是纯Python编写的,还会用到从C之类的语言编译出来的一些二进制文件(比如numpy这种),在pypi上发布的话会提供各种系统环境下使用的预编译版本,自己手动下载的话就得把编译的工作搞定哦(ゝ∀・)
> 见过用py写的但实际执行的文件是.exe的软件( ゚∀。)和直接运行.py,和c编译打包产生的.exe有什么异同?
其实就是打包,本来的用途是方便把自己用Python写的软件放到没有安装Python的环境使用什么的……
目前最常用的打包工具pyinstaller,原理简单来说就是打包的时候把字节码和其他会用到的文件和用到的包和整个Python运行环境打包到一起(如果是单个exe文件的话,就是把这些文件解压到临时目录,退出的时候再删除),在打包后的程序里通过pyinstaller包含的bootloader启动(https://github.com/pyinstaller/pyinstaller/tree/develop/bootloader)。其它的打包工具原理应该也是类似的。