Python學(xué)習(xí)心法
1狮辽、語法不是重點(diǎn)
2淳衙、算法不是重點(diǎn)
3、數(shù)據(jù)結(jié)構(gòu)及其轉(zhuǎn)化是大多數(shù)算法的核心宠能,是應(yīng)該花大力氣學(xué)習(xí)的知識亚隙。
4 、Python知識的二八原則
?????20%的知識比較難 80%的知識淺顯易懂违崇;
?????80%的知識在編程中用不到 阿弃,常用的20%左右。
5羞延、在ai時代渣淳,有許多代碼輔助工具可以在學(xué)習(xí)和工作中使用運(yùn)。比如codex(https://beta.openai.com? 基于GTP-3和GPT-C肴楷,2022年五月codex內(nèi)測結(jié)束水由,開始收費(fèi)。), alphacode,? Copilot? tabnine 等等赛蔫。知識的細(xì)節(jié)和語法熟練度等方面越來越不重要砂客。所以學(xué)習(xí)的專注點(diǎn)不要放在語法和編程基本功上,也沒必要花太多時間刷很多算法題呵恢,應(yīng)該專注于問題本身鞠值、專注于問題所在領(lǐng)域的技術(shù)動向。在入門過程中我們很難寫出高質(zhì)量渗钉、有意義的代碼彤恶,當(dāng)你在語法和句法方面遇到的困難時,試著跳過那些微不足道的問題鳄橘,試著用注釋先備注這里遇到的問題声离,先讓程序的骨架搭建起來,再回頭處理細(xì)節(jié)問題瘫怜。
???????關(guān)于幾個代碼輔助工具的文章https://posts.careerengine.us/p/60dc0202fe56051682946b57
6术徊、專注于數(shù)據(jù)流
7、當(dāng)你對代碼的表達(dá)沒有足夠經(jīng)驗(yàn)時鲸湃,讀10個別人寫的優(yōu)秀的程序赠涮、不如一次將自己的簡單 ? ? 想法用代碼實(shí)現(xiàn)子寓。試著將自己的編程思想表達(dá)出來,每一次完整的編程實(shí)踐都意味著能力的拔高笋除。
8斜友、如果你關(guān)心的領(lǐng)域沒有充足的庫和算法有兩個可能 ,你檢索的范圍和檢索的方法有問題垃它,? 這部分知識被隱藏了起來鲜屏。試著投入精力解決你要解決的問題,這是我們學(xué)習(xí)編程的最終目的
9嗤瞎、學(xué)編程語言和學(xué)自然語言有很大部分是原理相通的墙歪,詞匯量、 表達(dá)習(xí)慣 贝奇,表達(dá)能力虹菲,思考能力、閱讀能力掉瞳,創(chuàng)新能力都可能幫助我們突破阻礙毕源,也都有可能成為障礙。
?10陕习、 當(dāng)我們學(xué)習(xí)編程時霎褐,我們是在學(xué)習(xí)一種思考方法,思考工具该镣,我們在提高思想的維度冻璃。
編程作為一種語言或許也是有維度的,不同維度的編程用來解決不同維度的問題损合,從我們運(yùn)用計算器處理簡單的數(shù)學(xué)計算開始省艳,或許就注定了計算機(jī)編程的宏大敘事;我們創(chuàng)造數(shù)據(jù)模型模擬世界嫁审,模擬我們身邊的事物跋炕,編程和算法的核心目標(biāo)是將問題數(shù)據(jù)化可計算化。
??????什么樣的事物是可以計算的呢律适?這個問題的答案一直在被改寫辐烂。
???????What is? program? What is python?
??????編程是符號的學(xué)問捂贿,它既包含數(shù)學(xué)纠修、哲學(xué)、語言學(xué),與我們以往的知識大有不同, 數(shù)學(xué)用函數(shù)和模型來描述事物厂僧,而編程即延襲了這些方法和思想分瘾、又開創(chuàng)性的提出了很多運(yùn)算的概念, 神經(jīng)網(wǎng)絡(luò)、機(jī)器學(xué)習(xí)這樣的算法既是數(shù)學(xué)又突破了數(shù)學(xué) ,不要急著回答諸如What is program這樣的問題 ,也不要急著去回答編程能干什么這樣的問題,計算科學(xué)才剛剛起步就改變了世界, 編程是智慧的飛躍 ,更是是智慧的進(jìn)化,是新時代的生產(chǎn)工具德召、思考工具。
???????豐富的代碼組合可以解決許多問題,怎么用編程來解決你的問題才是問題的核心,你要首先了解你的問題,其次你要了解編程.?
????????一直以來自然語言和文字被用作交流汽纤、思考上岗、創(chuàng)造和傳承的工具, 自從有了計算機(jī)科學(xué)、我們的一切都被改變了,而且這種改變的速度在逐步的加快 ,編程語言不只是一門技術(shù)蕴坪,而是將來人們必須掌握的生存技能 .
????????人們因使用而學(xué)習(xí)肴掷。而使用是最好的學(xué)習(xí)方法。學(xué)習(xí)Python可以有很多的動機(jī)背传,因?yàn)镻ython可以完成太多的工作,初學(xué)者應(yīng)該帶著怎樣的目標(biāo)來學(xué)習(xí)呢?
????????太多的概念太多的應(yīng)用和場景都在使用Python呆瞻,這讓初學(xué)者很容易迷失方向,但如果你帶著目標(biāo)來學(xué)習(xí)將起到事半功倍的效果.
????????為什么要專注于目標(biāo)?當(dāng)我們專注于目標(biāo)來學(xué)習(xí)Python時我們可以忽略掉目標(biāo)無關(guān)的知識忽略掉學(xué)習(xí)上的選擇困難,.
???????編程已經(jīng)擴(kuò)展到生活和生產(chǎn)的方方面面:網(wǎng)絡(luò),娛樂,藝術(shù)径玖,社交App, ai教育,小程序,ERP,財務(wù),設(shè)計,游戲,物聯(lián)網(wǎng),工控,自動化,,智能家居,智能交通,智能穿戴,服務(wù)機(jī)器人痴脾,機(jī)器視覺,語音識別梳星,翻譯赞赖,tts語音轉(zhuǎn)換,聲紋技術(shù)冤灾,生物傳感器前域,腦機(jī)接口,鑲?cè)胧皆O(shè)備,爬蟲,云,人工智能,大數(shù)據(jù),區(qū)塊鏈,數(shù)字貨幣,科學(xué)計算, 這些或成熟或稚嫩的應(yīng)用場景, 都在被硬軟件技術(shù)改造著韵吨。未來越來越數(shù)字化匿垄,越來越虛擬化。
?????如果你清楚的知道你要用Python去做什么事归粉,那么學(xué)習(xí)就變得簡單了,Python可以做很多事情椿疗。 你需要掌握一門編程語言,python 是不錯的入門語言盏浇。.
????????Python本身并不有趣变丧,但那些人們正在用python所作的事情太有趣了。
python 知識體系如下表:
入門第1課
print語句
1, print語句是一個Python內(nèi)置函數(shù),作用是將括號中的東西顯示出來,這個函數(shù)可以顯示幾乎所有的數(shù)據(jù),數(shù)字绢掰,字符串痒蓬,變量,表達(dá)式滴劲。
暫停思考:什么是數(shù)據(jù)攻晒?什么是數(shù)據(jù)結(jié)構(gòu)?什么是數(shù)據(jù)類型班挖?可計算的東西都可以是數(shù)據(jù)鲁捏,數(shù)據(jù)可以是簡單結(jié)構(gòu),沒有結(jié)構(gòu)萧芙,也可能結(jié)構(gòu)復(fù)雜:比如課表给梅、棋類棋譜假丧、圖片、視頻音頻动羽、波形包帚、樂譜、思維導(dǎo)圖等等.
數(shù)據(jù)類型:我們將需要計算的東西規(guī)范化統(tǒng)一化以便計算機(jī)能夠存儲計算运吓。如:int, 布爾,列表渴邦、字典,就是我們設(shè)計的數(shù)據(jù)類型拘哨。用type()函數(shù)可以查詢數(shù)據(jù)的類型谋梭。
????print語句可以打印很多東西
print(‘money’)
pyint(‘money’*100)
a = range(10)
print(a)
注意:print 既然是一個函數(shù),函數(shù)后面的括號自然少不了
x = 558
y = 557
print(x+y)
print 打印布爾表達(dá)式
a = 2
b = 3
print(a>b)? ? #a>b是一個布爾表達(dá)式倦青,這里的結(jié)果是假False
#是一個注釋符號,是代碼的解釋瓮床,#后面的語句不執(zhí)行,只是幫助代碼的閱讀
三個單引號和三個雙引號常用來注釋一段代碼姨夹,二者效果一樣纤垂。
單引號注釋代碼塊
‘’’
dshskjhkj
jjkjkkjklk
‘’’
雙引號注釋代碼塊
”“
hjhkj
kljklj?
klkjkljk
”“
在調(diào)試代碼是也會經(jīng)常使用ctrl + /? 快捷鍵來注釋掉整塊代碼,再次按ctrl + /? 可以取消注釋
特別要注意:在錄入代碼時,務(wù)必將電腦輸入法切換到英文輸入模式,Python不認(rèn)識中文標(biāo)點(diǎn)符號
注意:print函數(shù)默認(rèn)是換行的如果不換行可以在輸出內(nèi)容后加end=' ’用逗號隔開磷账。
????????????????end=‘\n ‘是默認(rèn)參數(shù)峭沦,默認(rèn)情況換行。
????????????????print ()函數(shù)還有很多參數(shù)逃糟,在深入學(xué)習(xí)中會遇到
a = 2
b = 3
print(a>b)
print(a*b)
print(a-b,end='? ')
print(a+b,end='? ')
print(a,a,b,b,)
print('結(jié)束打印')
輸出
False
6
-1? 5? 2 2 3 3
結(jié)束打印
這里的end=’‘之間加了一個空格
???實(shí)際上我們可以把end 參數(shù)換成很多樣式吼鱼,以達(dá)到輸出效果,我估計它的性質(zhì)和關(guān)鍵字參數(shù)類似绰咽,有興趣可以作些實(shí)驗(yàn)
a = 2
b = 3
print(a>b,end='___\n')
print(a*b,end='7,6,8,7,6,\n')
print(a-b,end='&&\n')
print(a+b,end='1,2,3\n')
print(a,a,b,b)
print(end=' *************? ? ****** ? ? *****? ? *****\n')
print('結(jié)束打印')
輸出
False___
67,6,8,7,6,
-1&&
51,2,3
2 2 3 3
?*************? ? ****** ? ? *****? ? *****
結(jié)束打印
注意”print函數(shù)的兩種格式化輸出%和format菇肃。也不是多難,初學(xué)者了解便好取募。
先來了解下%后面接不同字母代表的轉(zhuǎn)換意義琐谤,%s 表示轉(zhuǎn)換成字符,%o轉(zhuǎn)換成8進(jìn)制
%d轉(zhuǎn)換成10進(jìn)制玩敏,%x轉(zhuǎn)換成16進(jìn)制斗忌,%o轉(zhuǎn)換成8進(jìn)制,%接f旺聚,e织阳,g表示保留不同的有效位,以及小數(shù)點(diǎn)后位數(shù)砰粹。%%文字唧躲,%i 轉(zhuǎn)換成整數(shù)
例:a = 88,print('a 的大小為:%s'% a) 輸出:a 的大小為:88
%S也被解釋為占位符,先在輸出內(nèi)容中展占位弄痹,最后補(bǔ)充說明該位置應(yīng)該替換的數(shù)據(jù)
a = 88
b = 99
print('a 的大小為:%s,b 的大小為%s饭入,兩者相差%s'% (a,b,b-a))
輸出:a 的大小為:88,b 的大小為99,兩者相差11
? format 和%差不多
zidian = {'name':'張三','age':'40','tixing':'球型'}
print('大肥豬{name},今年{age}歲,體型已經(jīng)變成{tixing}了'.format(**zidian))
輸出:大肥豬張三,今年40歲,體型已經(jīng)變成球型了
? ? print()函數(shù)還有一個重要的參數(shù)sep=肛真,用來設(shè)置分隔符
a = '你好:'
b = '先生'
c = '王'
d = '李'
e = '趙'
f = '小姐'
print(a,c,b,sep='? ? |? ? ? ',end='? -------- ? ---- ? ? ? --\n')
print(a,d,b,sep='? ? |? ? ? ',end='? -------- ? ---- ? ? ? --\n')
print(a,e,f,sep='? ? |? ? ? ',end='? -------- ? ---- ? ? ? --\n')
輸出
你好:? ? |? ? ? 王? ? |? ? ? 先生? -------- ? ---- ? ? ? --
你好:? ? |? ? ? 李? ? |? ? ? 先生? -------- ? ---- ? ? ? --
你好:? ? |? ? ? 趙? ? |? ? ? 小姐? -------- ? ---- ? ? ? --
入門第2課? 變量及變量賦值
????計算機(jī)可以存儲數(shù)據(jù)圣拄,這是馮諾依曼結(jié)構(gòu)的特點(diǎn),我們不用知道數(shù)據(jù)存在硬盤的和內(nèi)存的什么地方,Python編程要做的,只是給這塊存儲空間起一個名字毁欣。
Python變量命名只有簡單的幾條規(guī)則:
???????1、變量名[空間的名字]由字母和數(shù)字以及下劃線組成岳掐。
???????2凭疮、但不能以數(shù)字開頭
???????3、下劃線是可以開頭的串述,但這種情況是極特殊:__init__,__main___,__item__
???????4执解、有一些字母組合是保留關(guān)鍵字,而這些保留關(guān)鍵字是python執(zhí)行器判斷程序結(jié)構(gòu)的依據(jù)纲酗,在變量命名時不能使用衰腌。
>>> import keyword? ? #導(dǎo)入keywork外置模塊
>>> keyword.kwlist ? ? #用kwlist方法打印python保留關(guān)鍵字
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
注意:以上四條不僅是變量名命名的規(guī)則,同時也是函數(shù)和類的命名規(guī)則.
變量賦值
Python賦值語句的設(shè)計十分自由簡潔:例如
a = ’你好世界‘
不需要提前申明變量,約束變量的類型觅赊,在賦值的一瞬間完成了許多工作右蕊。
第1句a = ’你好世界‘就是一條賦值語句,變量a被賦值為’你好世界’,前邊不需要加上數(shù)據(jù)類型,Python根據(jù)后面的內(nèi)容自動判斷數(shù)據(jù)類型
??????變量的賦值也意味著被分配存儲空間 (實(shí)際上只是指向)
???(擴(kuò)展知識:Python的內(nèi)存分配機(jī)制有共用、駐留吮螺、銷毀等機(jī)制,可以用is方法判斷兩個變量是不是被分配到了同一空間,可以用==判斷兩個變量中存儲的值是否相等,可以用id()的方法查詢變量存儲的內(nèi)存位置,(地址)饶囚。變量被賦值后,可以的隨時隨地給他賦另外一個類型的值.
??????一個變量被賦值后編程者要清楚的掌控此時這個變量的類型,這點(diǎn)很重要。因?yàn)椴煌愋偷臄?shù)據(jù)有不同的計算特性和方法特性鸠补。
??????變量對應(yīng)著存儲空間,你可以先給變量賦予一個字符,然后過一陣子再用它來存儲其他的東西,這是可以的萝风。變量的類型type,由它存儲的數(shù)據(jù)決定。
a = 'hj'
print(a)
print(type(a))? ? ? #打印變量a的數(shù)據(jù)類型
a = 1
print(a)
print(type(a))? ? ? #再次打印變量a的類型
輸出
hj
<class 'str'>
1
<class 'int'> ? ? ? #因?yàn)樽兞縜被重新賦值紫岩,所以它的類型變了
??????不要糾結(jié)變量的名字规惰,關(guān)注變量中的值才是重點(diǎn),簡單的一對一變量賦值一般不會出錯,容易出錯的地方是,我們在用變量接收函數(shù)返回值時泉蝌、容易把數(shù)量搞錯,這時需要注意,函數(shù)有幾個輸出就用幾個變量來接收,數(shù)量上要匹配否則會報錯.?
??????很多時候我們的賦值語句不是給變量一個給定的值而是一個表達(dá)式 ,甚至是一個隨著程序運(yùn)行而不斷變化的一個表達(dá)式 ,這里我們舉幾個相對簡單的例子:
a = 1
b = 2
c = a*b+a/b
print(c)
輸出:2.5
為了追求語句簡潔,Python還可以批量賦值
a, b, c, d = 1歇万,3,5梨与,9 ? ? #賦值符號=兩邊個數(shù)匹配就行堕花,這里同時給四個變量賦四個值
print(a, b, c, d)
輸出
1? 3? 5? 9
???賦值語句還往往將函數(shù)的返回值賦給變量
def just(lst=[1,2,3,4]):
????a, b, c, d = lst[0], lst[1], lst[2], lst[3]
????return a,b,c,d
e,f,g,h = just(lst=[5,6,7,8])
print(e,f,g,h)
輸出
>>> 5 6 7 8
????????函數(shù)的相關(guān)知識將在后邊學(xué)習(xí),這里只需了解有這樣的賦值形式
?locals()函數(shù)粥鞋,動態(tài)變量(難點(diǎn)初學(xué)者可忽略):
如果變量名比較多而這些變量名又是有一定規(guī)律時可以使用動態(tài)賦值?
names =? locals()? ? ? ? ? ? ? ? ? ? ? ? ? #告訴編譯器我要定一個動態(tài)變量names
for i in range(5):
??????names[‘n’+str(i)]=i? ? ? ? ? ? ? ? ? ? #動態(tài)生成變量名
print(n0 n1 n2 n3 n4) ? ? ? ? ? ? ? #n0 n1 n2 n3 n4是動態(tài)生成的變量
輸出
?01234
???在閱讀代碼時缘挽,了解賦值符號兩邊東西是理解代碼的關(guān)鍵。賦值語句是最簡單的python知識,但賦值語句又最基礎(chǔ)最普遍最重要的語句壕曼,有時=右邊的結(jié)構(gòu)比較復(fù)雜苏研,要細(xì)心分析表達(dá)式的最終結(jié)果,隨著學(xué)習(xí)的深入腮郊,你會發(fā)現(xiàn)摹蘑,所有的數(shù)據(jù)類型都可以賦值給變量,除此之外圖片轧飞,視頻衅鹿,聲音,文件过咬,設(shè)備大渤,網(wǎng)絡(luò)端口等等太多的事物都可以用賦值語句賦值給變量,你會越來越了解掸绞,變量的意義泵三,賦值的意義,數(shù)據(jù)的意義衔掸,計算的意義烫幕。
???????總結(jié):這里我們大概了解了python的知識體系,了解了print函數(shù)敞映,了解了變量的命名規(guī)則较曼,以及變量的賦值,我們可以嘗試給變量賦不同的值并打印出來驱显。
???????如何作實(shí)驗(yàn):下一節(jié)我們將介紹python的編程平臺pycharm诗芜,在此之前可以使用菜鳥工具的python在線工具https://c.runoob.com/compile/9/ 對本節(jié)類容進(jìn)行練習(xí),手機(jī)瀏覽器也是可以的埃疫。代碼寫點(diǎn)擊運(yùn)行就可以在下免得輸出框看到結(jié)果伏恐。下一節(jié)進(jìn)行數(shù)據(jù)類型的學(xué)習(xí)。