1. 認識Python
1.1 Python 簡介
Python 的創(chuàng)始人為吉多·范羅蘇姆(Guido van Rossum)。
Python 的設(shè)計目標:
簡單直觀的語言
并與主要競爭者一樣強大開源
,以便任何人都可以為它做貢獻像純英語那樣容易理解
短期
開發(fā)的日常任務(wù)Python 的設(shè)計哲學(xué):
Python 開發(fā)者的哲學(xué)是:用一種方法,最好是只有一種方法來做一件事
Python 是完全面向?qū)ο蟮恼Z言,在 Python 中一切皆對象。
可擴展性:如果需要一段關(guān)鍵代碼運行得更快或者希望某些算法不公開,可以把這部分程序用 C 或 C 編寫,然后在 Python 程序中使用它們。
1.2. 第一個Python程序
執(zhí)行 Python 程序的三種方式:
解釋器、交互式運行、IDE運行
Python 是一個格式非常嚴格的程序設(shè)計語言。
python 2.x 默認不支持中文。
python
python3
為了照顧現(xiàn)有的程序,官方提供了一個過渡版本 —— Python 2.6。
提示:如果開發(fā)時,無法立即使用 Python 3.0(還有極少的第三方庫不支持 3.0 的語法),建議
IPython 是一個 python 的 交互式 shell,比默認的 python shell 好用得多,它支持 bash shell 命令,適合于學(xué)習(xí)/驗證 Python 語法或者局部代碼。
集成開發(fā)環(huán)境(IDE,Integrated Development Environment)—— 集成了開發(fā)軟件需要的所有工具,一般包括以下工具:
代碼補全
/自動縮進
)斷點
/單步執(zhí)行
)1.3. PyCharm 的設(shè)置
PyCharm 的 配置信息 是保存在 用戶家目錄下 的 .PyCharmxxxx.x 目錄下的,xxxx.x 表示當(dāng)前使用的 PyCharm 的版本號
1.3.1 恢復(fù) PyCharm 的初始設(shè)置:
1.3.2 PyCharm 安裝和啟動步驟:
/opt 目錄用戶存放給主機額外安裝的軟件
1.3.3 設(shè)置啟動圖標
Tools
/Create Desktop Entry...
可以設(shè)置任務(wù)欄啟動圖標快捷方式文件
在 ubuntu 中,應(yīng)用程序啟動的快捷方式通常都保存在 /usr/share/applications 目錄下
1.3.4 卸載之前版本的 PyCharm
要卸載 PyCharm 只需要做以下兩步工作:
如果不再使用 PyCharm 還需要將 /usr/share/applications/ 下的 jetbrains-pycharm.desktop 刪掉
1.4. 多文件項目的演練
項目
就是開發(fā)一個專門解決一個復(fù)雜業(yè)務(wù)功能的軟件
一個項目
就具有一個獨立專屬的目錄
,用于保存所有和項目相關(guān)的文件
鼠標右鍵的方式執(zhí)行
一下可以直接執(zhí)行的 Python 源程序
2. 注釋
2.1 單行注釋(行注釋)
為了保證代碼的可讀性,# 后面建議先添加一個空格,然后再編寫相應(yīng)的說明文字;為了保證代碼的可讀性,注釋和代碼之間 至少要有 兩個空格。
2.2 多行注釋(塊注釋)
提示:
注釋不是越多越好
,對于一目了然的代碼,不需要添加注釋復(fù)雜的操作
,應(yīng)該在操作開始前寫上若干行注釋不是一目了然的代碼
,應(yīng)在其行尾添加注釋(為了提高可讀性,注釋應(yīng)該至少離開代碼 2 個空格)2.3 代碼規(guī)范:
Python 的代碼格式
給出了建議,也就是俗稱的PEP 8
:3. 運算符
3.1 算數(shù)運算符
是完成基本的算術(shù)運算使用的符號,用來處理四則運算,而“ ”和“*”還可以用來處理字符串。
3.2 比較(關(guān)系)運算符
不等于
還可以使用 <> 運算符不等于
3.3 賦值運算符
算術(shù)運算符
對應(yīng)的賦值運算符
,注意:賦值運算符中間不能使用空格
。3.4 身份運算符
身份運算符比較兩個對象的內(nèi)存位置。常用的有兩個身份運算符,如下所述:
辨析
對象
是否為同一個值
是否相等3.5 成員運算符
Python成員運算符測試給定值是否為序列中的成員。 有兩個成員運算符,如下所述:
3.6 邏輯運算符
3.7 運算符優(yōu)先級
CPU
把Python 解釋器
的程序復(fù)制到內(nèi)存
中Python 解釋器
根據(jù)語法規(guī)則,從上向下
讓CPU
翻譯Python 程序中的代碼
CPU
負責(zé)執(zhí)行翻譯完成的代碼Python 的解釋器有多大?
4. 變量
4.1 變量定義
在使用前都必須賦值
,變量賦值以后
該變量才會被創(chuàng)建
其他變量的計算結(jié)果
來定義變量第一次出現(xiàn)
才是定義變量
使用交互式方式,如果要查看變量內(nèi)容,直接輸入變量名即可,不需要使用 print 函數(shù)
使用解釋器執(zhí)行,如果要輸出變量的內(nèi)容,必須要要使用 print 函數(shù)
4.2 變量的類型
不需要指定類型
(在其他很多高級語言中都需要),Python 可以根據(jù) = 等號右側(cè)的值,自動推導(dǎo)出變量中存儲數(shù)據(jù)的類型數(shù)字型
和非數(shù)字型
數(shù)字型提示:在 Python 2.x 中,整數(shù) 根據(jù)保存數(shù)值的長度還分為:
<補>不同類型變量之間的計算
數(shù)字型變量
之間可以直接計算字符串變量
之間使用 拼接字符串字符串變量
可以和整數(shù)
使用 * 重復(fù)拼接相同的字符串數(shù)字型變量
和字符串
之間不能進行其他計算
<補>從鍵盤獲取輸入信息:input
任何內(nèi)容
Python 都認為是一個字符串
<補>類型轉(zhuǎn)換函數(shù)
<補>格式化輸出:print
一起輸出
數(shù)據(jù)
,就需要使用到格式化操作符
格式化操作符
,專門用于處理字符串中的格式格式化字符串
字符
連用,不同類型的數(shù)據(jù)
需要使用不同的格式化字符
4.3 變量的命名
4.3.1 標識符和關(guān)鍵字
標示符就是程序員定義的 變量名、函數(shù)名
字母
、下劃線
和數(shù)字
組成不能以數(shù)字開頭
不能與關(guān)鍵字重名
關(guān)鍵字 就是在 Python 內(nèi)部已經(jīng)使用的標識符
關(guān)鍵字
具有特殊的功能和含義不允許定義和關(guān)鍵字相同的名字的標識符
4.3.2 變量的命名規(guī)則
命名規(guī)則 可以被視為一種 慣例,并無絕對與強制
目的是為了 增加代碼的識別和可讀性
注意 Python 中的 標識符 是 區(qū)分大小寫的
_下劃線
連接,例如:first_name、last_name、qq_number、qq_password。當(dāng)然,還有駝峰命名法:
小駝峰式命名法:第一個單詞以小寫字母開始,后續(xù)單詞的首字母大寫,例如:firstName、lastName。
大駝峰式命名法,每一個單詞的首字母都采用大寫字母,例如:FirstName、LastName、CamelCase 。
4.4 高級變量類型
在 Python 中,所有 非數(shù)字型變量 都支持以下特點:
1. 都是一個 序列 sequence,也可以理解為 容器
2. 取值 []
3. 遍歷 for in
4. 計算長度len、最大/最小值max/min、比較、刪除del
5. 鏈接 和 重復(fù) *
6. 切片
4.4.1 列表(list)
最頻繁
的數(shù)據(jù)類型,在其他語言中通常叫做數(shù)組
,專門用于存儲一串 信息
,列表用 [] 定義,數(shù)據(jù)
之間使用 , 分隔,列表的索引
從 0 開始。索引 就是數(shù)據(jù)在 列表 中的位置編號,索引 又可以被稱為 下標
注意:從列表中取值時,如果 超出索引范圍,程序會報錯
<補>del 關(guān)鍵字
將一個變量從內(nèi)存中刪除的
在日常開發(fā)中,要從列表刪除數(shù)據(jù),建議 使用列表提供的方法
<補>函數(shù)與方法
函數(shù)
封裝了獨立功能,可以直接調(diào)用函數(shù)需要死記硬背
方法
和函數(shù)類似,同樣是封裝了獨立的功能方法
需要通過對象
來調(diào)用,表示針對這個對象
要做的操作在變量后面輸入 .,然后選擇針對這個變量要執(zhí)行的操作,記憶起來比函數(shù)要簡單很多
<補>循環(huán)遍歷
遍歷
就是從頭到尾
依次
從列表
中獲取數(shù)據(jù),在循環(huán)體內(nèi)部
針對每一個元素
,執(zhí)行相同的操作。for-in循環(huán)流程圖
列表
中可以存儲不同類型的數(shù)據(jù)
列表
存儲相同類型的數(shù)據(jù)迭代遍歷
,在循環(huán)體內(nèi)部,針對列表中的每一項元素,執(zhí)行相同的操作4.4.2 元組(tuple)
元素不能修改元組
表示多個元素組成的序列元組
在 Python 開發(fā)中,有特定的應(yīng)用場景一串 信息
,數(shù)據(jù)
之間使用 , 分隔索引
從 0 開始,索引
就是數(shù)據(jù)在元組
中的位置編號。創(chuàng)建空元組:
元組中 只包含一個元素 時,需要 在元素后面添加逗號:
元組示意圖
列表
、元組
、字典
以及字符串
能夠確認元組中的數(shù)據(jù)類型
,否則針對元組的循環(huán)遍歷需求并不是很多函數(shù)的 參數(shù) 和 返回值
,一個函數(shù)可以接收任意多個參數(shù)
,或者一次返回多個數(shù)據(jù)
格式字符串
,格式化字符串后面的 () 本質(zhì)上就是一個元組讓列表不可以被修改
,以保護數(shù)據(jù)安全<補>元組和列表之間的轉(zhuǎn)換
4.4.3 字典(dict)
dict(字典) 是 除列表以外 Python 之中 最靈活 的數(shù)據(jù)類型。
字典同樣可以用來 存儲多個數(shù)據(jù),通常用于存儲 描述一個 物體 的相關(guān)信息
列表
是有序
的對象集合字典
是無序
的對象集合鍵值對
存儲數(shù)據(jù),鍵值對之間使用逗號
, 分隔:鍵
key 是索引值
value 是數(shù)據(jù)鍵
和值
之間使用冒號
: 分隔鍵必須是唯一的
值
可以取任何數(shù)據(jù)類型,但鍵
只能使用字符串
、數(shù)字
或元組
提示:在實際開發(fā)中,由于字典中每一個鍵值對保存數(shù)據(jù)的類型是不同的,所以針對字典的循環(huán)遍歷需求并不是很多
字典
多個鍵值對
,存儲描述一個 物體 的相關(guān)信息
—— 描述更復(fù)雜的數(shù)據(jù)信息多個字典
放在一個列表
中,再進行遍歷,在循環(huán)體內(nèi)部針對每一個字典進行相同的處理
card_list = [{'name': '張三',
'qq': '12345',
'phone': '110'},
{'name': '李四',
'qq': '54321',
'phone': '10086'}
]
4.4.4 字符串(str)
字符串
就是一串字符
,是編程語言中表示文本的數(shù)據(jù)類型一對雙引號
' 或者一對單引號
' 定義一個字符串索引
獲取一個字符串中指定位置的字符
,索引計數(shù)從0
開始循環(huán)遍歷
字符串中每一個字符大多數(shù)編程語言都是用 ' 來定義字符串
提示:在 python 中對字符串操作,內(nèi)置提供的方法足夠多,使得在開發(fā)時,能夠針對字符串進行更加靈活的操作!應(yīng)對更多的開發(fā)需求!
1) 判斷類型 - 9
2) 查找和替換 - 7
3) 大小寫轉(zhuǎn)換 - 5
4) 文本對齊 - 3
5) 去除空白字符 - 3
6) 拆分和連接 - 5
<補>字符串的切片
切片
方法適用于字符串
、列表
、元組切片
使用索引值
來限定范圍,從一個大的字符串
中切出
小的字符串
列表
和元組
都是有序
的集合,都能夠通過索引值
獲取到對應(yīng)的數(shù)據(jù)字典
是一個無序
的集合,是使用鍵值對
保存數(shù)據(jù)注意:
左閉右開
型 [開始索引, 結(jié)束索引) => 開始索引 <= 范圍 < 結(jié)束索引從 起始 位開始,到結(jié)束位的前一位
結(jié)束(不包含結(jié)束位本身
)開始索引
數(shù)字可以省略,冒號不能省略
結(jié)束索引
數(shù)字可以省略,冒號不能省略
數(shù)字和冒號都可以省略
<補>索引的順序和倒序
順序索引
,同時還支持倒序索引
從右向左
計算索引:最右邊的索引值是-1
,依次遞減。4.4.5 公共方法和變量的高級應(yīng)用
4.4.5.1 內(nèi)置函數(shù)
Python 包含了以下內(nèi)置函數(shù):
注意:字符串 比較符合以下規(guī)則: '0' < 'A' < 'a'。
4.4.5.2 切片
切片
使用索引值
來限定范圍,從一個大的字符串
中切出
小的字符串
列表
和元組
都是有序
的集合,都能夠通過索引值
獲取到對應(yīng)的數(shù)據(jù)字典
是一個無序
的集合,是使用鍵值對
保存數(shù)據(jù)4.4.5.3 運算符
注意
字典
操作時,判斷的是字典的鍵
成員運算符
4.4.5.4 內(nèi)置函數(shù)完整的 for 循環(huán)語法
應(yīng)用場景:
迭代遍歷
嵌套的數(shù)據(jù)類型時,例如一個列表包含了多個字典
存在
,提示并且退出循環(huán)不存在
,在循環(huán)整體結(jié)束
后,希望得到一個統(tǒng)一的提示
4.4.5.5 變量的引用
內(nèi)存
中的函數(shù) 的 參數(shù)傳遞
以及返回值
都是靠引用
傳遞的在 Python 中:變量 和 數(shù)據(jù) 是分開存儲的,數(shù)據(jù) 保存在內(nèi)存中的一個位置,變量 中保存著數(shù)據(jù)在內(nèi)存中的地址,就叫做 引用,使用 id() 函數(shù)可以查看變量中保存數(shù)據(jù)所在的 內(nèi)存地址。
注意:如果變量已經(jīng)被定義,當(dāng)給一個變量賦值的時候,本質(zhì)上是 修改了數(shù)據(jù)的引用
不再
對之前的數(shù)據(jù)引用改為
對新賦值的數(shù)據(jù)引用在 Python 中,變量的名字類似于 便簽紙 貼在 數(shù)據(jù) 上:
在 Python 中,函數(shù)的 實參/返回值 都是是靠 引用 來傳遞來的
結(jié)果
結(jié)果
4.4.5.6 可變和不可變類型
不可變類型
,內(nèi)存中的數(shù)據(jù)不允許被修改:可變類型
,內(nèi)存中的數(shù)據(jù)可以被修改:注意:字典的 key 只能使用不可變類型的數(shù)據(jù)
注意
可變類型
的數(shù)據(jù)變化,是通過方法
來實現(xiàn)的引用會修改
變量不再
對之前的數(shù)據(jù)引用改為
對新賦值的數(shù)據(jù)引用<補>哈希 (hash)
不可變類型
的數(shù)據(jù)作為參數(shù)
,返回
結(jié)果是一個整數(shù)
。算法
,其作用就是提取數(shù)據(jù)的特征碼(指紋)
,相同的內(nèi)容
得到相同的結(jié)果
,不同的內(nèi)容
得到不同的結(jié)果
。鍵值對
時,會首先對 key 進行 hash 已決定如何在內(nèi)存中保存字典的數(shù)據(jù),以方便后續(xù)
對字典的操作:增、刪、改、查
:鍵值對的 key 必須是不可變類型數(shù)據(jù),鍵值對的 value 可以是任意類型的數(shù)據(jù)。4.4.5.7 局部變量和全局變量
局部變量
是在函數(shù)內(nèi)部
定義的變量,只能在函數(shù)內(nèi)部使用
;函數(shù)執(zhí)行結(jié)束后,函數(shù)內(nèi)部的局部變量,會被系統(tǒng)回收
;不同的函數(shù),可以定義相同的名字的局部變量,但是彼此之間
不會產(chǎn)生影響;局部變量一般臨時
保存函數(shù)內(nèi)部需要使用的數(shù)據(jù)
。全局變量
是在函數(shù)外部定義
的變量(沒有定義在某一個函數(shù)內(nèi)),所有函數(shù)
內(nèi)部都可以使用這個變量
。提示:在其他的開發(fā)語言中,大多 不推薦使用全局變量 —— 可變范圍太大,導(dǎo)致程序不好維護!
注意:函數(shù)執(zhí)行時,需要處理變量時 會:
函數(shù)內(nèi)部
是否存在 指定名稱 的局部變量,如果有,直接使用函數(shù)外部
是否存在 指定名稱 的全局變量,如果有,直接使用注意:函數(shù)不能直接修改全局變量的引用,如果要修改,必須要用global聲明該變量是全局變量。
注意:為了避免局部變量和全局變量出現(xiàn)混淆,在定義全局變量時,有些公司會有一些開發(fā)要求,例如:全局變量名前應(yīng)該增加 g_ 或者 gl_ 的前綴。
5. 判斷(分支)
5.1 if 語句語法
1、if 判斷語句基本語法:
注意:代碼的縮進為一個 tab 鍵,或者 4 個空格 —— 建議使用空格
2、如果需要在 不滿足條件的時候,做某些事情,該如何做呢?
與 and
/或 or
/非 not
三種3、如果希望 再增加一些條件,條件不同,需要執(zhí)行的代碼也不同 時,就可以使用 elif :
注意
完整的代碼塊
4、在開發(fā)中,使用 if 進行條件判斷,如果希望 在條件成立的執(zhí)行語句中 再 增加條件判斷,就可以使用 if 的嵌套:
5.2 if語句的應(yīng)用
5.2.1 隨機數(shù)的處理
隨機數(shù)
的模塊
—— “工具包”模塊名稱
后面敲一個 . 然后按 Tab 鍵,會提示該模塊中包含的所有函數(shù)5.2.2 石頭剪刀布
6. 循環(huán)
6.1 程序執(zhí)行的三大流程
在程序開發(fā)中,一共有三種流程方式:
程序執(zhí)行的三大流程
6.2 while 循環(huán)基本使用
while 語句基本語法:
由于程序員的原因,忘記 在循環(huán)內(nèi)部 修改循環(huán)的判斷條件,導(dǎo)致循環(huán)持續(xù)執(zhí)行,程序?qū)⑾萑?strong>死循環(huán)而無法終止!
計數(shù)器 1 :可以通過賦值運算符簡化代碼的編寫。
常見的計數(shù)方法有兩種,可以分別稱為:
自然計數(shù)法
(從 1 開始)—— 更符合人類的習(xí)慣程序計數(shù)法
(從 0 開始)—— 幾乎所有的程序語言都選擇從 0 開始計數(shù)因此,大家在編寫程序時,應(yīng)該盡量養(yǎng)成習(xí)慣:除非需求的特殊要求,否則 循環(huán) 的計數(shù)都從 0 開始
6.3 break 和 continue
break 和 continue 是專門在循環(huán)中使用的關(guān)鍵字
當(dāng)前所在循環(huán)
有效6.4 while 循環(huán)嵌套
示例:
<補>字符串中的轉(zhuǎn)義字符
制表符
,協(xié)助在輸出文本時垂直方向
保持對齊換行符
制表符 的功能是在不使用表格的情況下在 垂直方向 按列對齊文本