Python摸索開始

靈魂拷問派殷,為什么天選之子是它 ?墓阀?毡惜?

  • 主要是想做個(gè)量化工具,看了看招聘渠道需要會(huì)Python和C斯撮,據(jù)說Python用來做數(shù)據(jù)分析最方便快捷,里面存在非常多成熟的數(shù)據(jù)分析用的庫经伙。

思考

Q: 那我怎么開始認(rèn)識(shí)Python呢?我對它不是很熟勿锅,半年的時(shí)候簡單摸索了一下帕膜,后面有事情就暫停摸索了。
A: Python是解釋型語言溢十。
補(bǔ)充A:大家好奇不好奇垮刹,高級(jí)語言是怎么被機(jī)器執(zhí)行的?機(jī)器只能識(shí)別機(jī)器語言0张弛、1這樣源碼或者匯編語言movl $5 荒典、addl這樣的,那高級(jí)語言能被執(zhí)行就需要翻譯成這樣的語言吞鸭,既然是翻譯那就會(huì)有提前翻譯和執(zhí)行期間翻譯寺董。不同翻譯時(shí)機(jī)就造成了兩種名詞:編譯型語言(提前翻譯好)、解釋型語言(執(zhí)行代碼的時(shí)候翻譯)刻剥,關(guān)于兩者的優(yōu)劣就不說了自己查下就好遮咖,無非就是編譯型語言提前翻譯好執(zhí)行效率會(huì)更高一點(diǎn)。解釋型語言擴(kuò)平臺(tái)好造虏,只要平臺(tái)提前安裝了解釋器就可以執(zhí)行
A:再補(bǔ)充一點(diǎn)御吞,是不是有人對動(dòng)態(tài)語言類型靜態(tài)語言類型也有些懵。順帶解釋下哈漓藕,針對靜態(tài)語言陶珠、動(dòng)態(tài)語言是根據(jù)數(shù)據(jù)類型校驗(yàn)時(shí)間而言的。執(zhí)行前撵术,也就是編譯時(shí)候?qū)?shù)據(jù)類型做了校驗(yàn)背率,明確要求了數(shù)據(jù)類型,這就是靜態(tài)語言也是強(qiáng)類型語言。運(yùn)行期間才做數(shù)據(jù)類型校驗(yàn)的寝姿,開發(fā)時(shí)候不用指定數(shù)據(jù)類型的是動(dòng)態(tài)語言比如(JavaScript交排、Python、PHP)饵筑。通常情況下編譯型語言是靜態(tài)類型埃篓,解釋型語言是動(dòng)態(tài)類型語言。但是也有特殊的根资,比如swift語言就很怪架专,是編譯型語言+動(dòng)態(tài)類型的混合體,C#和Java反而是解釋型語言+靜態(tài)類型

Q:既然明白了Python是解釋型語言玄帕,那就需要安裝解釋器才能用嘍部脚,怎么安裝解釋器呢?
A:解釋器其實(shí)就是安裝Python安裝包就好了裤纹,Mac默認(rèn)的是2.7版本委刘,當(dāng)下流行的是3.11版本,可以安裝多版本鹰椒。win執(zhí)行的時(shí)候可以用py選擇版本執(zhí)行锡移。

Q:那我需要用什么平臺(tái)來開發(fā)Python的項(xiàng)目呢?
A:可用平臺(tái)比較多漆际,常用的PyCharm淆珊、VS等,我還是選擇了pycharm奸汇,主要是看著這個(gè)跟Python開發(fā)看起來就更般配一些施符,具體有什么區(qū)別也沒對比。茫蛹。

Q:Python開發(fā)中的包管理工具是什么操刀?
A: 在語言開發(fā)中,任何語言幾乎都會(huì)有自己的包管理工具婴洼。Python中的包管理工具是pip,可以安裝對應(yīng)的pip3版本,查詢是否安裝了可以通過pip -V 或者 pip3 -V

Q:我寫的Python程序如有運(yùn)行撼嗓?柬采?
A:用編譯器運(yùn)行即可,進(jìn)入到指定目錄且警,然后pyhton xxx.py即可運(yùn)行該文件粉捻。所以我們只要安裝好了解釋器環(huán)境,即可終端運(yùn)行程序斑芜。當(dāng)然PyChram里面的終端也可以運(yùn)行肩刃。

Q:我們?nèi)绾未虬约旱捻?xiàng)目?
A:我們使用Cpython打包exe文件。Cpython是C語言寫的python的代碼解釋器盈包,將python代碼轉(zhuǎn)換成計(jì)算機(jī)識(shí)別的字節(jié)碼沸呐。通過cpython可以直接將Python代碼編譯成exe文件而不需要安裝Python環(huán)境,實(shí)現(xiàn)真正獨(dú)立運(yùn)行呢燥。其次我們需要通過PyInstaller將代碼打包成可獨(dú)立執(zhí)行的工具崭添,可以通過PyInstaller打包成不同平臺(tái)的可執(zhí)行程序(Win、Mac叛氨、Linux)呼渣。

Q:執(zhí)行一遍通過CPython的打包吧
A: 通過CPython打包exe

Q: 我們?nèi)绾我肴綆欤?/em>
A: 我們通過pip管理包,安裝:pip install xxx 查詢當(dāng)前都有哪些包:pip list
查看某個(gè)包的具體信息:pip show xxxx 卸載某個(gè)包:pip uninstall xxxx

Q: 我們?nèi)绾握{(diào)試程序寞埠?
A:我在win上面開發(fā)的屁置,使用的VSCode開發(fā)工具,左側(cè)有個(gè)debug按鈕,項(xiàng)目第一次時(shí)候需要再最上面選擇下Python File Debug .....的選項(xiàng)即可

開始第一個(gè)hello python的程序創(chuàng)建吧

  1. 打開開發(fā)PyCharm工具仁连,點(diǎn)擊File選擇創(chuàng)建項(xiàng)目蓝角,然后選擇好解釋器進(jìn)行創(chuàng)建即可


    截屏2023-08-05 下午6.54.04.png
截屏2023-08-05 下午6.56.54.png
  1. 編寫一個(gè)小程序,然后執(zhí)行吧怖糊。找到項(xiàng)目右擊new--> file 創(chuàng)建.py的文件帅容,文件內(nèi)容寫print("hello python") ,然后工具下面的終端進(jìn)入對應(yīng)的文件件運(yùn)行pyhton xxxx.py即可。

Q:Queue隊(duì)列怎么回事伍伤?
A: 任何語言都繞不開性能并徘,異步、同步扰魂、線程安全問題

問題匯總

Q: python執(zhí)行時(shí)如何選定某個(gè)版本執(zhí)行麦乞?
A:
Mac工具: python2 xxx.py 或者 python3 xxx.py
Win工具: py -2.7 .\xx.py 或者 py -3.11 .\xxxx.py

Q: 開發(fā)中常見的if __name__ == ‘__main__‘是什么?
A:通常一個(gè).py的項(xiàng)目文件有兩種運(yùn)行情況劝评,一種是直接運(yùn)行此文件姐直,一種是被引入其他文件中執(zhí)行。此處的判斷就是對這種情況進(jìn)行的蒋畜。
如果直接運(yùn)行此文件則__name__ == 是 __main__,如果是此文件被導(dǎo)入其他文件中執(zhí)行声畏,則__name__ == 包名.文件名,這個(gè)名稱是有變化的姻成,所以此處的判斷是對直不直接運(yùn)行此文件的影響插龄。直接運(yùn)行此文件,則此處邏輯代碼執(zhí)行科展,如果被導(dǎo)入其他文件運(yùn)行的代碼均牢,則此處文件不被運(yùn)行。

Q:經(jīng)巢哦茫看到 try: with xxx 和 except: 這些有什么特點(diǎn)呢徘跪?
A:此處可以單獨(dú)開一篇文章介紹

Q: 如何寫內(nèi)容到一個(gè)文件里面
A:用到open()函數(shù)甘邀,里面參數(shù)具體使用參照里面文檔吧。第一參數(shù)是文件名垮庐、寫入讀取的類型松邪、內(nèi)容編碼格式。打開后通過json的fump函數(shù)寫入即可突硝,然后關(guān)閉函數(shù)测摔。

with open(filename, 'a', encoding='utf-8') as fileObj:
        json.dump("寫入測試", fileObj, ensure_ascii=False)
        fileObj.write('\n')
fileObj.close()

Q: 剛看到一個(gè)with as 的語法,這是什么解恰?
A: Python中with as 語句

Q:ModuleNotFoundError: No module named 'xxx'
A: 這是在Win環(huán)境下锋八,安裝了Python3 到D盤中,項(xiàng)目在桌面的C盤中护盈,剛開始pip install的三方包后挟纱,正常運(yùn)行了幾次,然后突然報(bào)上面錯(cuò)誤腐宋。這就是包沒有被識(shí)別紊服。也就是說項(xiàng)目運(yùn)行時(shí)候需要找到Python解釋器但是在當(dāng)前路徑下沒有找到,那么我們先確定下我們安裝的包是存在的胸竞。
那么Python代碼執(zhí)行邏輯是什么呢欺嗤?
我們import模塊之后卫枝,代碼執(zhí)行的時(shí)候,是先去sys.path里依次搜索校赤,直到找到對應(yīng)模塊
那么搜索模塊的sys.path里面的路徑是怎么來的呢马篮?
A:主要是前兩種

  1. 一是系統(tǒng)的PYTHONPATH變量,所以我們可以通過設(shè)置此變量來改變Python的默認(rèn)搜索位置
  2. sys.path的另一個(gè)來源就是當(dāng)前執(zhí)行程序所在目錄浑测。注意是文件所在的目錄不是文件路徑
  3. 第三就是win系統(tǒng)C盤上的一些python路徑,亂七八糟的無啥用迁央。

那我們就知道怎么解決這個(gè)問題了,兩個(gè)方面漱贱,一個(gè)是修改系統(tǒng)的PYTHONPATH變量夭委,另一方面通過 sys.path.append添加模塊路徑

一募强、先檢查下Pyhton的搜索路徑
先看下當(dāng)前模塊路徑都有哪些
再看下當(dāng)前當(dāng)前PYTHONPATH變量是什么
再找到當(dāng)前安裝的那些三方模塊在哪里
其次就是添加這些路徑即可

import sys
print(sys.path)
print(os.environ.get('PYTHONPATH'))

打印的是None,說明項(xiàng)目本身就找不到Python的解釋器擎值,無法運(yùn)行。
二鸠儿、pip list 查看包確實(shí)存在
三、pip show xxxx會(huì)把路徑給你打印出來 d:\tools\python\python3\lib\site-packages(1.6.1),這樣我們就明確知道包所在的具體位置厕氨。
三进每、添加Win的Python環(huán)境:

方法1:通過sys.path.append()函數(shù) 雖然是python里面最常用的,但是不推薦

import sys
sys.path.append('d:\tools\python\python3\lib\site-packages')

添加完成后可以通過
print(sys.path)來查看是否添加成功

此處常用是由于通常項(xiàng)目都是一個(gè)本地電腦運(yùn)行一個(gè)項(xiàng)目命斧,如果同一個(gè)環(huán)境需要多個(gè)環(huán)境來回切換田晚,并且項(xiàng)目類似,那么還是建議修改系統(tǒng)的PYTHONPATH變量來修改模塊掃描路徑国葬。

很奇怪的是贤徒,我明明導(dǎo)入成功了site-packages,但是還是無法識(shí)別到websocket這個(gè)模塊
很神奇的事情汇四,那就是明明導(dǎo)入到了模塊的搜索路徑中接奈,但是有時(shí)候項(xiàng)目重新打開時(shí)候會(huì)失效,所以推薦第二種通孽。

重點(diǎn)推薦】方法2:修改系統(tǒng)PYTHONPATH變量路徑序宦,不同環(huán)境Win和MacOS還有些區(qū)別,
MacOS環(huán)境可以選擇用命令行利虫。

export PYTHONPATH= d:\tools\python\python3\lib\site-packages:$PYTHONPATH

Win環(huán)境可以手動(dòng)添加:搜索環(huán)境變量挨厚,然后在系統(tǒng)變量模塊里,點(diǎn)擊新建
添加糠惫。當(dāng)然在用戶環(huán)境編輯(推薦)疫剃,或者在系統(tǒng)環(huán)境編輯都可以。但是【問題出現(xiàn)】加入后路徑變量后硼讽,sys.path還是無法顯示出添加的路徑導(dǎo)致導(dǎo)入的模塊還是不能識(shí)別巢价,分別在path和PYTHONPATH都添加了路徑,但是就是無法加載識(shí)別出來固阁,真是奇葩了壤躲。。备燃。碉克。

重新排查一遍問題:

where python

出現(xiàn)兩個(gè)python,一個(gè)是我自己安裝的D盤里的并齐,一個(gè)是C盤WindowsApps里面的漏麦,真是奇怪客税。

import sys;print(sys.executable)

查看我們的python解釋器路徑,理論上同where的路徑一致才對撕贞。但是只是同D盤路徑一致更耻。

在win搜索Python 發(fā)現(xiàn)還同步再微軟商店下載了Python3.11,卸載了這個(gè)捏膨。然后重啟后面發(fā)現(xiàn)添加成功了秧均。。号涯。。讶隐。久又。
記得添加PYTHONPATH路徑后地消,重啟。對了疼阔,還有一個(gè)細(xì)節(jié)需要注意半夷,就是VSCode的右下角突然可以給選擇解釋器了巫橄,選擇對應(yīng)位置的Python解釋器即可。

FillNotFoundError
問題描述:
文件A.py引用了文件B.py宾舅,然后B模塊又引用了C模塊筹我,C模塊中識(shí)別json文件時(shí)候通過debug模式無法識(shí)別帆离,但是直接run的話沒問題。袁串。。
解題思路:
其實(shí)還是文件路徑無法找到的問題。那我們只需要導(dǎo)入正確文件路徑即可王悍。
一、找到正確路徑
二鲜漩、更改當(dāng)前正確的工作目錄即可
我們需要用到

# 查看當(dāng)前工作目錄
os.getcwd()

#正確工作目錄
sys.path[0]

#添加爭取工作目錄到當(dāng)前文件
os.chdir(sys.path[0])

可以通過獲取當(dāng)前工作目錄對比添加前后變化

異常問題解釋

  • except的時(shí)候出現(xiàn)Too broad exception clause
    A:問題太寬泛導(dǎo)致的孕似,最好明確指出是什么類型的問題需要捕捉

參照文獻(xiàn):
https://blog.csdn.net/lcg910978041/article/details/50696196

https://blog.csdn.net/DALEONE/article/details/122267822

python中路徑什么意思_python基礎(chǔ)教程詳解Python中的路徑問題

ModuleNotFoundError:如何解決Python找不到模塊錯(cuò)誤喉祭?

ModuleNotFoundError: No module named 'xxx'可能的解決方案大全

如何修改Python的模塊搜索路徑泛烙?

Python環(huán)境變量配置不了 python設(shè)置環(huán)境變量不生效

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蔽氨,一起剝皮案震驚了整個(gè)濱河市帆疟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌自赔,老刑警劉巖匿级,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件痘绎,死亡現(xiàn)場離奇詭異肖粮,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)行施,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門蛾号,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人展运,你說我怎么就攤上這事精刷∨剩” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵勘畔,是天一觀的道長咖杂。 經(jīng)常有香客問我蚊夫,道長,這世上最難降的妖魔是什么壤圃? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任伍绳,我火速辦了婚禮冲杀,結(jié)果婚禮上睹酌,老公的妹妹穿的比我還像新娘。我一直安慰自己旺芽,他們只是感情好采章,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布痒给。 她就那樣靜靜地躺著益涧,像睡著了一般主之。 火紅的嫁衣襯著肌膚如雪芬迄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天承璃,我揣著相機(jī)與錄音盔粹,去河邊找鬼舷嗡。 笑死嵌莉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的中鼠。 我是一名探鬼主播沿癞,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼椎扬,長吁一口氣:“原來是場噩夢啊……” “哼蚕涤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起川陆,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤较沪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后们何,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體控轿,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡茬射,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年在抛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肠阱。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡屹徘,死狀恐怖噪伊,靈堂內(nèi)的尸體忽然破棺而出典挑,到底是詐尸還是另有隱情,我是刑警寧澤拙寡,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布肆糕,位于F島的核電站在孝,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏始赎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一魔招、第九天 我趴在偏房一處隱蔽的房頂上張望办斑。 院中可真熱鬧杆逗,春花似錦、人聲如沸蠕蚜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽争舞。三九已至澈灼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間委乌,已是汗流浹背荣回。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來泰國打工心软, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人删铃。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓猎唁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親腐魂。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容