python簡介
定義:是一個免費,開源,跨品臺,動態,面向對象的編程語言
程序執行方式:
- 交互式:在命令行輸入指令,回車即可得到結果
- 文件式:將指令編寫到py文件中,可以重復運行程序
函數:表示一個功能,制作函數的人叫做函數定義著,使用函數的人叫做函數調用者
變量:
- 定義:關聯一個對象的標識
- 命名:必須為字母,數字或者下劃線,后面跟著字母,數字,下劃線,不能使用保留關鍵字,
- 建議命名:見面知意字母小寫,多個單詞用下劃線隔開
- 語法:變量名 = 表達式 or 變量名1 = 變量名2 = 表達式 or 變量名1,變量名2 = 表達式1,表達式2
數據類型:
- None:表示不存在的特殊對象
- 整形(int):整數包含整數,負數,0。
- 有十進制,二進制,八進制,十六進制
- 小整數對象池:cpython中整數-5到256,永遠存在小整數對象池中,不會釋放
- 對象池:緩存的機制
- 浮點型(float)
- 小數,包含正數,負數,0.0
- 字面值1.5
- 科學計數法:1.5e1 ,05e-1
- 字符串(str)
- 用于記錄文本信息
- 字面值:單引號,雙引號,三引號
- 布爾值(bool)
- True表示真
- False表示假
- 復數(complex)
- 由實部和虛部組成的數字
- 虛部以j或J結尾 5+3j? ? ?5j
數據類型轉換
- 轉為整形:int(數據)
- 轉為浮點型:float(數據)
- 轉為字符串: str(數據)
- 轉為布爾 : bool(數據)
- False: 0 , 0.0 ,'',None
- True:有值
運算符
- 算數運算符
- +
- -
- *
- / 小數除結果為float類型
- // 底板除:向下取整
- %取余數
- **冪運算
- 增強運算符:-=? ?+=? *=? /=? //=? %=? **=
- 比較運算符:>? <? ?==? >=? ?<=? !=結果是bool類型
- 邏輯運算符
- and: 一假具假
- or:一真則真
- not:取反
- 身份運算符
- is:判斷兩個對象是否為一個對象
- is not :與is相反
range函數
作用:可以生成一系列整數的可迭代對象。
語法:range(開始點,結束點,間隔點)
break語句:跳出循環體,后面的代碼不在執行
continue語句:跳過本次循環,繼續下次循環
容器
- 字符串(str):由一系列字符組成的不可變序列容器,存儲的是字符編碼值
- 列表(list):由一系列變量組成的可變序列容器
- 列表推導式:變量= [表達式for變量in可迭代對象if條件]
- 推導式鑲嵌:[表達式for變量1 in可迭代對象1 for變量2 in可迭代對象2]
- 元組(tuple):由一系列變量組成的不可變序列容器
- 字典(dict):由一系列鍵值對組成的可變映射容器
- 映射(哈希算法):通過鍵對應值,每條記錄無序。
- 鍵必須唯一且不可變對象(字符串,數字,元組),值沒有限制
- 集合(set):由一些列不重復的變量組成的可變映射容器,相當于只有鍵沒有值的字典
- 固定集合(frozenset):不可變的集合
函數
定義:用于封裝一個特定的功能,表示一個行為,可以重復執行的語句塊。
作用:提供程序的復用性,可維護性(代碼層次結構更清晰)
返回值(return):方法定義著告訴調用的結果
函數參數
- 實參傳遞方式argument
- 位置傳參:實參與形參的位置一次對應
- 序列傳參:實參用*將序列拆解后與形參的位置依次對應
- 關鍵字傳參:實參根據形參的名字進行對應
- 字典傳參:實參用**將字典蔡姐與形參的名字進行對應
- 形參傳遞方式 parameter
- 默認(缺省)參數:參數 = 默認值
- 位置形參:def函數名(參數)
- 星號元組形參:*args
- 命名關鍵字形參:強制實參使用關鍵字傳遞
- 雙星號字典形參 : **kwargs
可變/不可變類型再傳參時的區別:
- 不可變類型:字符串,元組,固定集合,整數。浮點數。復數
- 可變類型:列表,字典,集合
- 不可變類型的數據傳參時,函數內部不會改變元數據的值
- 可變類型的數據傳參時,函數內部可能改變原數據的值
作用域LEGB
- local局部作用域:函數內部
- encolsing外部嵌套作用域:函數嵌套
- GLOBAL全局作用域:py文件內部
- Builtins內建模塊作用域:builtins.py
- 變量名的查找規則:L-->E-->G--B
局部變量:在方法體內部定義的變量調用函數時才被創建,函數結束后自動銷毀
全局變量:定義再.py文件中的變量函數體內部可以訪問,但不能直接修改,需要先聲明
模塊:包含一系列數據,函數,類的文件,通常以.py結尾
? ? 作用:讓一些相關的數據,函數,類的邏輯的組織再一起,使邏輯結構更加清晰,有利于多人合作開發。
? ? 導入
-
- import 模塊名:將某模塊整體導入到當前模塊中
- from 模塊名 import 成員名:將模塊內的一個或多個成員導入到當前模塊的作用域中
- from 模塊名import *:將模塊的所有成員導入到擋墻模塊
? ?加載過程:在模塊導入時,模塊的所有語句會執行。如果一個模塊已經導入,則再次導入時不會執行模塊內的語句
分類:
- 內置模塊(builtins),在解析器的內部可以直接使用
- 標準庫模塊,安裝Python時已安裝且可直接使用
- 第三方模塊,需要自己安裝
- 用戶自己編寫的模塊(可以作為其他人的第三方模塊)
迭代:每一次對過程的重復稱為一次“迭代”,而每一次迭代得到的結果會作為下一次迭代的初始值
可迭代對象(iterable):具有__iter__函數的對象,可以返回迭代器對象
迭代器對象(iterator):可以被next()函數調用并返回下一個值的對象
說明:聚合對象通常是容器對象
作用:使用者只需要通過一種方式,便可簡潔明了的獲取聚合對象中各個元素,而無需了解其內部結構
生成器(generator):能夠動態(循環一次計算一次返回一次)提供數據的可迭代對象
作用:在循環過程中,按照某種算法推算數據,不必創建容器存儲完整的結果,從而節省內存空間,數據量越大,優勢越明顯
生成器函數:含有yield語句的函數,返回值為生成器對象
函數式編程:用一系列函數解決問題
-
- 函數可以賦值給變量,賦值后變量綁定函數
- 允許將函數作為參數傳入另一個函數
- 允許函數返回一個函數
高階函數:將函數作為參數或返回值的函數
函數作為參數:將核心邏輯傳入方法體,使該方法的適用性更廣,體現了面向對象的開閉原則
lambda表達式:是一種匿名方法
作用:作為參數傳遞時語法簡潔,優雅,代碼可讀性強,隨時創建和銷毀,減少程序耦合度
語法:變量 = lambda形參:方法體 方法體只能有一條語句,且不支持賦值語句
閉包:
三要素
- 必須有一個內嵌函數
- 內嵌函數必須引用外部函數中變量
- 外部函數返回值必須是內嵌函數
定義:再一個函數內部的函數,用時內部函數又引用了外部函數的變量
本質:閉包是將內部函數和外部函數的執行環境綁定再一起的地下
優點:內部函數可以使用外部變量
缺點:外部變量一直存在于內存中,不會在調用結束后釋放,占用內存
作用:實現Python裝飾器
?