灵魂拷问,为什么天选之子是它 ???
- 主要是想做个量化工具,看了看招聘渠道需要会Python和C,据说Python用来做数据分析最方便快捷,里面存在非常多成熟的数据分析用的库。
思考
Q: 那我怎么开始认识Python呢?我对它不是很熟,半年的时候简单摸索了一下,后面有事情就暂停摸索了。
A: Python是解释型语言。
补充A:大家好奇不好奇,高级语言是怎么被机器执行的?机器只能识别机器语言0、1这样源码或者汇编语言movl $5 、addl这样的,那高级语言能被执行就需要翻译成这样的语言,既然是翻译那就会有提前翻译和执行期间翻译。不同翻译时机就造成了两种名词:编译型语言(提前翻译好)、解释型语言(执行代码的时候翻译),关于两者的优劣就不说了自己查下就好,无非就是编译型语言提前翻译好执行效率会更高一点。解释型语言扩平台好,只要平台提前安装了解释器就可以执行
A:再补充一点,是不是有人对动态语言类型和静态语言类型也有些懵。顺带解释下哈,针对静态语言、动态语言是根据数据类型校验时间而言的。执行前,也就是编译时候对数据类型做了校验,明确要求了数据类型,这就是静态语言也是强类型语言。运行期间才做数据类型校验的,开发时候不用指定数据类型的是动态语言比如(JavaScript、Python、PHP)。通常情况下编译型语言是静态类型,解释型语言是动态类型语言。但是也有特殊的,比如swift语言就很怪,是编译型语言+动态类型的混合体,C#和Java反而是解释型语言+静态类型
Q:既然明白了Python是解释型语言,那就需要安装解释器才能用喽,怎么安装解释器呢?
A:解释器其实就是安装Python安装包就好了,Mac默认的是2.7版本,当下流行的是3.11版本,可以安装多版本。win执行的时候可以用py选择版本执行。
Q:那我需要用什么平台来开发Python的项目呢?
A:可用平台比较多,常用的PyCharm、VS等,我还是选择了pycharm,主要是看着这个跟Python开发看起来就更般配一些,具体有什么区别也没对比。。
Q:Python开发中的包管理工具是什么?
A: 在语言开发中,任何语言几乎都会有自己的包管理工具。Python中的包管理工具是pip,可以安装对应的pip3版本,查询是否安装了可以通过pip -V
或者 pip3 -V
Q:我写的Python程序如有运行??
A:用编译器运行即可,进入到指定目录,然后pyhton xxx.py即可运行该文件。所以我们只要安装好了解释器环境,即可终端运行程序。当然PyChram里面的终端也可以运行。
Q:我们如何打包自己的项目?
A:我们使用Cpython打包exe文件。Cpython是C语言写的python的代码解释器,将python代码转换成计算机识别的字节码。通过cpython可以直接将Python代码编译成exe文件而不需要安装Python环境,实现真正独立运行。其次我们需要通过PyInstaller将代码打包成可独立执行的工具,可以通过PyInstaller打包成不同平台的可执行程序(Win、Mac、Linux)。
Q:执行一遍通过CPython的打包吧
A: 通过CPython打包exe
Q: 我们如何引入三方库?
A: 我们通过pip管理包,安装:pip install xxx
查询当前都有哪些包:pip list
查看某个包的具体信息:pip show xxxx
卸载某个包:pip uninstall xxxx
Q: 我们如何调试程序?
A:我在win上面开发的,使用的VSCode开发工具,左侧有个debug按钮,项目第一次时候需要再最上面选择下Python File Debug .....的选项即可
开始第一个hello python的程序创建吧
-
打开开发PyCharm工具,点击File选择创建项目,然后选择好解释器进行创建即可
- 编写一个小程序,然后执行吧。找到项目右击new--> file 创建.py的文件,文件内容写
print("hello python")
,然后工具下面的终端进入对应的文件件运行pyhton xxxx.py
即可。
Q:Queue队列怎么回事?
A: 任何语言都绕不开性能,异步、同步、线程安全问题
问题汇总
Q: python执行时如何选定某个版本执行?
A:
Mac工具: python2 xxx.py 或者 python3 xxx.py
Win工具: py -2.7 .\xx.py 或者 py -3.11 .\xxxx.py
Q: 开发中常见的if __name__ == ‘__main__‘
是什么?
A:通常一个.py的项目文件有两种运行情况,一种是直接运行此文件,一种是被引入其他文件中执行。此处的判断就是对这种情况进行的。
如果直接运行此文件则__name__ == 是 __main__
,如果是此文件被导入其他文件中执行,则__name__ == 包名.文件名
,这个名称是有变化的,所以此处的判断是对直不直接运行此文件的影响。直接运行此文件,则此处逻辑代码执行,如果被导入其他文件运行的代码,则此处文件不被运行。
Q:经??吹?try: with xxx 和 except: 这些有什么特点呢?
A:此处可以单独开一篇文章介绍
Q: 如何写内容到一个文件里面
A:用到open()函数,里面参数具体使用参照里面文档吧。第一参数是文件名、写入读取的类型、内容编码格式。打开后通过json的fump函数写入即可,然后关闭函数。
with open(filename, 'a', encoding='utf-8') as fileObj:
json.dump("写入测试", fileObj, ensure_ascii=False)
fileObj.write('\n')
fileObj.close()
Q: 刚看到一个with as 的语法,这是什么?
A: Python中with as 语句
Q:ModuleNotFoundError: No module named 'xxx'
A: 这是在Win环境下,安装了Python3 到D盘中,项目在桌面的C盘中,刚开始pip install的三方包后,正常运行了几次,然后突然报上面错误。这就是包没有被识别。也就是说项目运行时候需要找到Python解释器但是在当前路径下没有找到,那么我们先确定下我们安装的包是存在的。
那么Python代码执行逻辑是什么呢?
我们import??橹?,代码执行的时候,是先去sys.path
里依次搜索,直到找到对应???/em>。
那么搜索??榈?code>sys.path里面的路径是怎么来的呢?
A:主要是前两种
- 一是系统的PYTHONPATH变量,所以我们可以通过设置此变量来改变Python的默认搜索位置
-
sys.path
的另一个来源就是当前执行程序所在目录。注意是文件所在的目录不是文件路径 - 第三就是win系统C盘上的一些python路径,乱七八糟的无啥用。
那我们就知道怎么解决这个问题了,两个方面,一个是修改系统的PYTHONPATH变量,另一方面通过 sys.path.append
添加??槁肪?/p>
一、先检查下Pyhton的搜索路径
先看下当前模块路径都有哪些
再看下当前当前PYTHONPATH变量是什么
再找到当前安装的那些三方??樵谀睦?br>
其次就是添加这些路径即可
import sys
print(sys.path)
print(os.environ.get('PYTHONPATH'))
打印的是None,说明项目本身就找不到Python的解释器,无法运行。
二、pip list
查看包确实存在
三、pip show xxxx
会把路径给你打印出来 d:\tools\python\python3\lib\site-packages(1.6.1)
,这样我们就明确知道包所在的具体位置。
三、添加Win的Python环境:
方法1:通过sys.path.append()
函数 虽然是python里面最常用的,但是不推荐
import sys
sys.path.append('d:\tools\python\python3\lib\site-packages')
添加完成后可以通过
print(sys.path)
来查看是否添加成功
此处常用是由于通常项目都是一个本地电脑运行一个项目,如果同一个环境需要多个环境来回切换,并且项目类似,那么还是建议修改系统的PYTHONPATH变量来修改??樯杪肪?。
很奇怪的是,我明明导入成功了site-packages,但是还是无法识别到websocket这个???/em>
很神奇的事情,那就是明明导入到了??榈乃阉髀肪吨校怯惺焙蛳钅恐匦麓蚩焙蚧崾?,所以推荐第二种。
【重点推荐】方法2:修改系统PYTHONPATH变量路径,不同环境Win和MacOS还有些区别,
MacOS环境可以选择用命令行。
export PYTHONPATH= d:\tools\python\python3\lib\site-packages:$PYTHONPATH
Win环境可以手动添加:搜索环境变量,然后在系统变量模块里,点击新建
添加。当然在用户环境编辑(推荐),或者在系统环境编辑都可以。但是【问题出现】加入后路径变量后,sys.path还是无法显示出添加的路径导致导入的??榛故遣荒苁侗?,分别在path和PYTHONPATH都添加了路径,但是就是无法加载识别出来,真是奇葩了。。。。
重新排查一遍问题:
where python
出现两个python,一个是我自己安装的D盘里的,一个是C盘WindowsApps里面的,真是奇怪。
import sys;print(sys.executable)
查看我们的python解释器路径,理论上同where的路径一致才对。但是只是同D盘路径一致。
在win搜索Python 发现还同步再微软商店下载了Python3.11,卸载了这个。然后重启后面发现添加成功了。。。。。。
记得添加PYTHONPATH路径后,重启。对了,还有一个细节需要注意,就是VSCode的右下角突然可以给选择解释器了,选择对应位置的Python解释器即可。
FillNotFoundError
问题描述:
文件A.py引用了文件B.py,然后B??橛忠昧薈???,C??橹惺侗餵son文件时候通过debug模式无法识别,但是直接run的话没问题。。。
解题思路:
其实还是文件路径无法找到的问题。那我们只需要导入正确文件路径即可。
一、找到正确路径
二、更改当前正确的工作目录即可
我们需要用到
# 查看当前工作目录
os.getcwd()
#正确工作目录
sys.path[0]
#添加争取工作目录到当前文件
os.chdir(sys.path[0])
可以通过获取当前工作目录对比添加前后变化
异常问题解释
- except的时候出现Too broad exception clause
A:问题太宽泛导致的,最好明确指出是什么类型的问题需要捕捉
参照文献:
https://blog.csdn.net/lcg910978041/article/details/50696196
https://blog.csdn.net/DALEONE/article/details/122267822
python中路径什么意思_python基础教程详解Python中的路径问题
ModuleNotFoundError:如何解决Python找不到模块错误?