跟著廖雪峰老師學(xué)python (1)

若想技術(shù)精進(jìn),當(dāng)然得把基礎(chǔ)知識(shí)打得牢牢的。

廖雪峰的官方網(wǎng)站 ?python3教程,該網(wǎng)站提供的教程淺顯易懂,還附帶了講學(xué)視頻,非常適合初學(xué)者正規(guī)入門。

以下是通過廖雪峰python官方網(wǎng)站學(xué)習(xí)的個(gè)人查漏補(bǔ)缺。

一、精進(jìn)一下對(duì)python編程語言的認(rèn)知

Life is short, You need Python ?--python programming

在windows中 cmd進(jìn)入命令行窗口 ?鍵入python ?然后再輸入import antigravity ?就能夠跳出該畫面。能帶你飛的python。

使用python是加強(qiáng)版的《烏鴉喝水》:

python的優(yōu)點(diǎn):簡(jiǎn)單、易學(xué)、面向?qū)ο蟆⒖蓴U(kuò)展、跨平臺(tái)、第三方庫支持很多

python的缺點(diǎn):

截圖來自廖雪峰網(wǎng)站:python? ? ? ?總之,python優(yōu)點(diǎn)大于缺點(diǎn)

python解釋器類別:CPython、IPython、PyPy、Jython、IronPython

CPython:這個(gè)解釋器是用C語言開發(fā)的,所以叫CPython。CPython是使用最廣的Python解釋器。

IPython:IPython是基于CPython之上的一個(gè)交互式解釋器,也就是說,IPython只是在交互方式上有所增強(qiáng),但是執(zhí)行Python代碼的功能和CPython是完全一樣的。好比很多國(guó)產(chǎn)瀏覽器雖然外觀不同,但內(nèi)核其實(shí)都是調(diào)用了IE。

***區(qū)別提示***CPython用>>>作為提示符,而IPython用In [序號(hào)]:作為提示符。所以在命令行中>>>提示符是用的CPython解釋器,在PyCharm或者Jupiter Notebook中 [序號(hào)] 提示符是用的IPython解釋器。

Jypthon:Jython是運(yùn)行在Java平臺(tái)上的Python解釋器,可以直接把Python代碼編譯成Java字節(jié)碼執(zhí)行。

IronPython:IronPython和Jython類似,只不過IronPython是運(yùn)行在微軟.Net平臺(tái)上的Python解釋器,可以直接把Python代碼編譯成.Net的字節(jié)碼。

****小結(jié)****Python的解釋器很多,但使用最廣泛的還是CPython。如果要和Java或.Net平臺(tái)交互,最好的辦法不是用Jython或IronPython,而是通過網(wǎng)絡(luò)調(diào)用來交互,確保各程序之間的獨(dú)立性。

python交互模式和命令行模式的區(qū)別:

python交互式模式的代碼是輸入一行,執(zhí)行一行;python命令行模型是直接運(yùn)行.py文件,一次性執(zhí)行該文件的所有代碼。 ? ? ??



二、精進(jìn)一下python編程中的基礎(chǔ)知識(shí)點(diǎn)

1. ?關(guān)于python的輸入、輸出(input/print)

print()函數(shù)可以解釋多個(gè)字符串,用逗號(hào)“,”隔開。print()會(huì)依次打印每個(gè)字符串,遇到逗號(hào)“,”會(huì)輸出一個(gè)空格,因此,輸出的字符串會(huì)有空格拼接起來。

自行添加空格拼接
?。?!用逗號(hào)分隔,這樣就不用使用str(100+200)強(qiáng)制轉(zhuǎn)換了 ?
input()從控制臺(tái)中接受輸入信息,無論什么信息都視為str類型,若想轉(zhuǎn)換成其他數(shù)據(jù)類型,則使用函數(shù)強(qiáng)制轉(zhuǎn)換即可

關(guān)于python編程好習(xí)慣的養(yǎng)成:python程序大小寫敏感,如果寫錯(cuò),程序會(huì)報(bào)錯(cuò)。 ? 少用“復(fù)制--粘貼”功能,縮進(jìn)會(huì)失效。 ?堅(jiān)持使用4個(gè)空格的縮進(jìn),在文本編輯器中,需要設(shè)置把Tab自動(dòng)轉(zhuǎn)換為4個(gè)空格,確保不混用Tab和空格。

2. ?數(shù)據(jù)類型

整型:和數(shù)學(xué)上的寫法一樣

浮點(diǎn)型:即小數(shù),對(duì)于很大或很小的浮點(diǎn)數(shù),就必須用科學(xué)計(jì)數(shù)法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5,等等。 ? ? (注意::整數(shù)和浮點(diǎn)數(shù)在計(jì)算機(jī)內(nèi)部存儲(chǔ)的方式是不同的,整數(shù)運(yùn)算永遠(yuǎn)是精確的(除法難道也是精確的?是的?。?,而浮點(diǎn)數(shù)運(yùn)算則可能會(huì)有四舍五入的誤差。

字符串:字符串是以單引號(hào)'或雙引號(hào)"括起來的任意文本。如果字符串內(nèi)部既包含'又包含"怎么辦?可以用轉(zhuǎn)義字符\來標(biāo)識(shí)。

轉(zhuǎn)義字符\可以轉(zhuǎn)義很多字符,比如\n表示換行\t表示制表符,字符\本身也要轉(zhuǎn)義,所以\\表示的字符就是\。

轉(zhuǎn)義字符 ?\ ?(斜杠)

注意:如果字符串里面有很多字符都需要轉(zhuǎn)義,就需要加很多\,為了簡(jiǎn)化,Python還允許用r''表示''內(nèi)部的字符串默認(rèn)不轉(zhuǎn)義。

r' ' 內(nèi)部字符串默認(rèn)不轉(zhuǎn)義

Python允許用'''...'''的格式表示多行內(nèi)容。

...是提示符,不是代碼的一部分

...是提示符

布爾類型: ?True、False 。 布爾值用and、or、not運(yùn)算。

空類型:None

list列表類型:list是一種有序的集合,可以隨時(shí)添加和刪除其中的元素。 1)list是一個(gè)可變的有序表,所以,可以往list中追加元素到末尾:append()方法 。 ? ? ? ?2)把元素插入到指定的位置,比如索引號(hào)為1的位置:insert(位置,內(nèi)容)方法。 ? ? ? ?3)刪除list末尾的元素:pop()方法 ;要?jiǎng)h除指定位置的元素,用pop(i)方法,其中i是索引位置。 ? ? ? ??4)要把某個(gè)元素替換成別的元素,可以直接賦值給對(duì)應(yīng)的索引位置。 ? ? ? ? ? ? ? ? 注:python中的列表是“打了激素的列表”,意思是里面什么數(shù)據(jù)類型都能裝。

tuple元組類型:tuple和list非常類似,但是tuple一旦初始化就不能修改。list用name_list=[’Michael‘,’Bob‘,’Tracy‘] ?; ? tuple用name_tuple=(’Michael‘,‘Bob’,‘Tracy’) ,tuple元組類型沒有append(),insert()這樣的方法,也不能給元素賦值更換。不可變的tuple有什么意義?因?yàn)閠uple不可變,所以代碼更安全。注:t=(1)定義的不是tuple,是1這個(gè)數(shù)!這是因?yàn)槔ㄌ?hào)()既可以表示tuple,又可以表示數(shù)學(xué)公式中的小括號(hào),這就產(chǎn)生了歧義,因此,Python規(guī)定,這種情況下,按小括號(hào)進(jìn)行計(jì)算,計(jì)算結(jié)果自然是1。所以,只有1個(gè)元素的tuple定義時(shí)必須加一個(gè)逗號(hào),,來消除歧義:t=(1, )

***********list和tuple是Python內(nèi)置的有序集合,一個(gè)可變,一個(gè)不可變。根據(jù)需要來選擇使用它們。************

dict字典類型:Python內(nèi)置了字典,dict全稱dictionary,在其他語言中也稱為map,使用鍵-值(key-value)存儲(chǔ),具有極快的查找速度,但是需要占用大量的內(nèi)存,內(nèi)存浪費(fèi)多。使用key-value存儲(chǔ)結(jié)構(gòu)的dict在Python中非常有用,選擇不可變對(duì)象作為key很重要,最常用的key是字符串。 ? ? ? ? ####避免key不存在導(dǎo)致錯(cuò)誤的兩種辦法:一是通過in判斷key是否存在;二是通過dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value。要?jiǎng)h除一個(gè)key,用pop(key)方法,對(duì)應(yīng)的value也會(huì)從dict中刪除。

避免key不存在導(dǎo)致錯(cuò)誤的兩種辦法 ? ? 注:字典dict內(nèi)部存放的順序和key放入的順序是沒有關(guān)系的。

set集合類型:set和dict類似,也是一組key的集合,但不存儲(chǔ)value。由于key不能重復(fù),所以,在set中,沒有重復(fù)的key,重復(fù)元素在set中自動(dòng)被過濾。1)通過add(key)方法可以添加元素到set中,可以重復(fù)添加,但不會(huì)有效果。 ? ?2)通過remove(key)方法可以刪除元素。 ? ? ? 3)set可以看成數(shù)學(xué)意義上的無序和無重復(fù)元素的集合,因此,兩個(gè)set可以做數(shù)學(xué)意義上的交集 ?&、并集 ?|等操作。

***************可變對(duì)象和不可變對(duì)象**************

’abc‘對(duì)象沒有被改變,對(duì)象自身調(diào)用replace()方法等其他方法會(huì)創(chuàng)建新的對(duì)象返回。 ?這就保證了不可變對(duì)象本身永遠(yuǎn)是不可改變的。

小結(jié):print()輸出 ? ?input()輸入 ? ?數(shù)據(jù)類型:整形、浮點(diǎn)型、字符型、布爾型、空類型、list列表類型、tuple元組類型、dict字典類型、set集合類型。



三、精進(jìn)一下python編程中的函數(shù)知識(shí)點(diǎn)

1. ?內(nèi)置函數(shù)

Python內(nèi)置了很多有用的函數(shù),我們可以直接調(diào)用。

>>> dir(__builtins__)//查看內(nèi)置函數(shù)(BIF)列表

>>> help(input)//查看內(nèi)置函數(shù)(BIF)功能描述

圖片截至:菜鳥教程

Python內(nèi)置函數(shù)詳解——總結(jié)篇

2. ?自定義函數(shù)

有簡(jiǎn)單實(shí)用的內(nèi)置函數(shù),當(dāng)然也可以靈活定義自己想要的函數(shù),注:函數(shù)定義中為了安全起見,有一個(gè)參數(shù)檢查步驟,自定義函數(shù)中可寫,可不寫。但是一個(gè)規(guī)范的、合格的編程者是應(yīng)該寫的。

自定義函數(shù)my_abs(),對(duì)參數(shù)類型做檢查,只允許整數(shù)和浮點(diǎn)數(shù)類型的參數(shù)。數(shù)據(jù)類型檢查用內(nèi)置函數(shù)isinstance()實(shí)現(xiàn)。

函數(shù)可以同時(shí)返回多個(gè)值,表面上是多個(gè)值,但實(shí)際返回值是一個(gè)tuple!但是,在語法上,返回一個(gè)tuple可以省略括號(hào),而多個(gè)變量可以同時(shí)接收一個(gè)tuple,按位置賦給對(duì)應(yīng)的值,所以,Python的函數(shù)返回多值其實(shí)就是返回一個(gè)tuple,但寫起來更方便。

3. ?函數(shù)的參數(shù)

1)位置參數(shù):power(x, n)函數(shù)有兩個(gè)參數(shù):x和n,這兩個(gè)參數(shù)都是位置參數(shù),調(diào)用函數(shù)時(shí),傳入的兩個(gè)值按照位置順序依次賦給參數(shù)x和n。 ? ? ?

2)默認(rèn)參數(shù):把第二個(gè)參數(shù)n的默認(rèn)值設(shè)定為2,power(x, n=2)。設(shè)置默認(rèn)參數(shù)時(shí),有幾點(diǎn)要*******注意:一是必選參數(shù)在前,默認(rèn)參數(shù)在后,否則Python的解釋器會(huì)報(bào)錯(cuò)。二是如何設(shè)置默認(rèn)參數(shù)。

當(dāng)函數(shù)有多個(gè)參數(shù)時(shí),把變化大的參數(shù)放前面,變化小的參數(shù)放后面。變化小的參數(shù)就可以作為默認(rèn)參數(shù)。使用默認(rèn)參數(shù)有什么好處?最大的好處是能降低調(diào)用函數(shù)的難度。默認(rèn)參數(shù)有個(gè)最大的坑:定義默認(rèn)參數(shù)要牢記一點(diǎn):默認(rèn)參數(shù)必須指向不變對(duì)象!

3)可變參數(shù):可變參數(shù)允許你傳入0個(gè)或任意個(gè)參數(shù),這些可變參數(shù)在函數(shù)調(diào)用時(shí)自動(dòng)組裝為一個(gè)tuple。定義可變參數(shù)和定義一個(gè)list或tuple參數(shù)相比,僅僅在參數(shù)前面加了一個(gè)*號(hào)。在函數(shù)內(nèi)部,參數(shù)numbers接收到的是一個(gè)tuple,因此,函數(shù)代碼完全不變。但是,調(diào)用該函數(shù)時(shí),可以傳入任意個(gè)參數(shù),包括0個(gè)參數(shù)。

*nums表示把nums這個(gè)list的所有元素作為可變參數(shù)傳進(jìn)去。這種寫法相當(dāng)有用,而且很常見。

4)關(guān)鍵字參數(shù):可變參數(shù)允許你傳入0個(gè)或任意個(gè)參數(shù),這些可變參數(shù)在函數(shù)調(diào)用時(shí)自動(dòng)組裝為一個(gè)tuple。而關(guān)鍵字參數(shù)允許你傳入0個(gè)或任意個(gè)含參數(shù)名的參數(shù),這些關(guān)鍵字參數(shù)在函數(shù)內(nèi)部自動(dòng)組裝為一個(gè)dict

**kw ?關(guān)鍵字參數(shù) ? ?dict類型

5)命名關(guān)鍵字參數(shù):和關(guān)鍵字參數(shù)**kw不同,命名關(guān)鍵字參數(shù)需要一個(gè)特殊分隔符*,*后面的參數(shù)被視為命名關(guān)鍵字參數(shù)。

* ? 命名關(guān)鍵字參數(shù)

6)參數(shù)組合:在Python中定義函數(shù),可以用必選參數(shù)、默認(rèn)參數(shù)、可變參數(shù)、關(guān)鍵字參數(shù)和命名關(guān)鍵字參數(shù),這5種參數(shù)都可以組合使用。但是請(qǐng)注意,參數(shù)定義的順序必須是:必選參數(shù)、默認(rèn)參數(shù)、可變參數(shù)、命名關(guān)鍵字參數(shù)和關(guān)鍵字參數(shù)。

對(duì)于任意函數(shù),都可以通過類似func(*args, **kw)的形式調(diào)用它,無論它的參數(shù)是如何定義的。 ?*args可變參數(shù),相當(dāng)于傳入一個(gè)tuple? ?**kw關(guān)鍵字參數(shù) ,相當(dāng)于傳入一個(gè)dict ? ? * ?命名關(guān)鍵字參數(shù)

雖然可以組合多達(dá)5種參數(shù),但不要同時(shí)使用太多的組合,否則函數(shù)接口的可理解性很差。

關(guān)于函數(shù)參數(shù)的有用小結(jié):

4. ?遞歸函數(shù)

1)使用遞歸函數(shù)的優(yōu)點(diǎn)是邏輯簡(jiǎn)單清晰,缺點(diǎn)是過深的調(diào)用會(huì)導(dǎo)致棧溢出。2)針對(duì)尾遞歸優(yōu)化的語言可以通過尾遞歸防止棧溢出。尾遞歸事實(shí)上和循環(huán)是等價(jià)的,沒有循環(huán)語句的編程語言只能通過尾遞歸實(shí)現(xiàn)循環(huán)。3)Python標(biāo)準(zhǔn)的解釋器沒有針對(duì)尾遞歸做優(yōu)化,任何遞歸函數(shù)都存在棧溢出的問題。

學(xué)習(xí)進(jìn)度條:

學(xué)完 函數(shù)

參考文章:

【1】廖雪峰的官方網(wǎng)站 ?python3教程

【2】Life is short, You need Python

【3】Life is short, you need Python

【4】Python內(nèi)置函數(shù)詳解——總結(jié)篇

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 最近在慕課網(wǎng)學(xué)習(xí)廖雪峰老師的Python進(jìn)階課程,做筆記總結(jié)一下重點(diǎn)。 基本變量及其類型 變量 在Python中,...
    victorsungo閱讀 1,943評(píng)論 0 5
  • 一、python 變量和數(shù)據(jù)類型 1.整數(shù) Python可以處理任意大小的整數(shù),當(dāng)然包括負(fù)整數(shù),在Python程序...
    績(jī)重KF閱讀 2,016評(píng)論 0 1
  • 個(gè)人筆記,方便自己查閱使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik閱讀 67,948評(píng)論 0 5
  • 本教程基于Python 3,參考 A Byte of Python v1.92(for Python 3.0) 以...
    yuhuan121閱讀 3,421評(píng)論 1 6
  • 今天下午在舞蹈學(xué)習(xí)開始前,我拿出了眉筆和口紅準(zhǔn)備化妝。與我一起跳舞的的同學(xué)有些不解地看著我說:“你為什么這個(gè)時(shí)...
    真崢閱讀 543評(píng)論 0 0

友情鏈接更多精彩內(nèi)容