Python3基础
環境搭建
參考網站:菜鳥教程
編碼
默認情況下,Python3源碼文件以UTF-8編碼,所有字符串都是unicode字符串。
標識符
- 第一個字符必須是字母表中字母或下劃線
- 標識符的其他部分由字母、數組和下劃線組成
- 標識符對大小寫敏感
在Python3中,可以用中文作為變量名,非ASCALL標識符也是允許的了
注釋
Python中單行注釋以#開頭,多行注釋可以用多個#,還可以成對的使用'''和"""
行與縮進
縮進的空格數是可變的,但是同一個代碼塊的語句必須包含相同的縮進空格數。
類定義、函數定義、選擇結構、循環結構、with塊,行尾的冒號表示縮進的開始
多行語句
Python通常是一行寫完一條語句,但是如果語句很長,我們可以使用反斜杠\來實現多行語句
total = item_one + \item_two + \item_three + \在[],{},()中的多行語句不需要使用反斜杠
total=['item_one','item_two','item_three','item_four']常見內置對象
數字類型
數字大小沒有限制
- int整型,如1
- bool布爾型,如True
- float浮點型,如1.23
- complex復數,如1+2j
隱式類型轉換:整數->浮點數->復數
下劃線作為千位分隔符
字符串str
- Python中單引號和雙引號的使用完全相同
- 使用三引號'''或"""可以指定一個多行字符串
- 不同字符串之間可以相互嵌套
- 反斜杠可以用來轉義,使用r可以讓反斜杠不發生轉義。例如
- 按字面意義級聯字符串,例如"this""is""string"會被自動轉化成"this is string"
- 字符串可以用+連接在一起,用*元素符重復
- 字符串由兩種索引方式,從左往右以0開始,從右往左以-1開始
- 字符串不能被改變
- 沒有單獨的字符類型,一個字符就是長度為1的字符串
- 中文和英文字母都作為一個字符對待
- 支持使用加號運算符連接字符串
- 字符串的截取的語法格式如下:變量[頭下標:尾下標:步長] (需要注意的是字符串是從位置0開始的,截取的字符串是從頭下標開始,每次增加步長,步長不說明默認為1,一直增加到大于等于尾下標為止)
字節串bytes
以字母b為引導,可以使用單引號、雙引號、三引號作為界定符。例如:
b'Hello world'對于str類型的字符串調用encode()方法進行編碼獲得
對于bytes字節串調用其decode()方法并指定正確的編碼格式得到str
列表list
所有元素放在一對方括號中,元素之間使用逗號分隔,其中的元素可以是任意類型。
字典dict
所有元素放在一對大括號中,元素之間使用逗號分隔,元素形式為:”鍵:值“
元組tuple
不可變,所有元素放在一對圓括號中,元素之間使用逗號分隔,如果元組中只有一個元素的話,后面的逗號不能省略。
集合set frozenset
所有元素放在一對大括號中,元素之間使用逗號分隔,元素不允許重復。另外,set是可變的,而frozenset是不可變的
布爾型 bool
邏輯值,關系運算符、成員測試運算符、同一性測試運算符組成的表達式的值一般為True或False
空類型 NoneType
空值None
異常 Exception ValueError TypeError
Python內置大量異常類,分別對應不同類型的異常
文件
open是Python內置函數,使用指定的模式打開文件,返回文件對象
其他可迭代對象
生成器對象、range對象、zip對象、enumerate對象、map對象、filter對象等等。具有惰性求值的特點,除range對象之外,其他對象中的元素只能看一次
編程單元
函數(使用def定義) 類(使用class定義) 模塊(類型為module)
類和函數都屬于可調用對象,模塊用來集中存放函數、類、常量或其他對象
保留字
Python3中保留字共33個:
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 True False None變量
- 不需要事先聲明變量名及其類型:Python是強類型編程語言,解釋器會根據賦值或運算來自動推斷變量類型。同時也是動態類型語言,變量的類型也是可以隨時變化的。
例如:
- 基于值的內存管理方式:變量并不直接存儲值,而是存儲了值的內存地址或者引用,變量類型隨時可以改變。
- 雖然可以不用聲明變量類型,但是必須要提前賦值以后才能夠使用 。
運算符和表達式
- Python中一切都是對象,對象由數據和行為兩部分組成
- 賦值:首先將等號右側表達式的值計算出來,然后在內存中尋找一個位置將值放進去,最后創建變量指向這個內存。
- *算數乘法,列表,元組,字符串類型與整數的乘法,表示序列元素的重復,生成新的序列對象
- /運算符是數學意義上的除法,//是整除,并且向下取整。
- %整數或實數的求余數運算,還可以表示字符串的格式化,例如:
- **冪乘
- 關系運算符不允許數字和字符串之間的比較
- 成員測試運算符in:成員測試,即測試一個對象是否為另一個對象的元素
- 統一性測試運算符is:測試兩個對象是否是同一個。(其實是比較地址)
- 邏輯運算符同樣采用惰性求值:只計算必須要計算的值。即如果前面條件已經成立就不會運行后面的代碼
- 運算符and和or返回最后一個被計算的表達式的值。如果表達式是非零整數則值為非零整數,如果是字符串的話仍然是字符串,如果是0的話仍然是0.只不過0被當作false處理
- 運算符not一定返回True或者False,例如:
- 矩陣乘法運算符@
- Python不支持++和-運算符,+和-放在數字前表示數字的正負
內置函數
內置函數(BIF,built-in functions)是Python內置對象類型之一,不需要額外導入任何模塊即可直接使用,這些內置對象都封裝在內置模塊__builtins__之中,用C語言實現并且進行了大量優化,具有非常快的運行速度,推薦優先使用。
使用內置函數dir()可以查看所有內置函數和內置對象
使用help(函數名)可以查看某個函數的用法。
基本輸入輸出函數
- input()接收用戶的鍵盤輸入,返回字符串,括號中的內容會作為提示信息輸出
- print(val1,val2,...,sep=' ',end='\n',file=sys.stdout,flush=False)以指定的格式輸出到標準控制臺或者指定的文件對象,sep參數之前未需要輸出的內容,可以有多個。sep參數用于指定數據之間的分隔符,默認為空格。file參數用于指定輸出位置,默認為標準控制臺,也可以重定向輸出到文件。flush指明是否即時輸出緩沖區內容
類型轉換和類型判斷
- bin() oct() hex() 將整數轉換為二進制、八進制和十六進制
- int()將其他形式的數字轉換成整數,當參數為數字字符串時,還允許指定第二個參數Base來說明明數字字符串的進制
- float()將其他類型轉換為實數
- complex()生成復數
-
字符編碼:ord()返回Unicode碼,chr()返回Unicode碼對應的字符,只允許對字符使用。因為Python中不支持字符和數字之間的操作,所以必須用這樣的方法
-
str()將括號中的內容轉換為字符串
- type() 可以用來獲取數據的類型。isinstance()可以用來判斷數據是否是第二個參數的類型,例如:
-
max() min() sum()分別用于計算列表、元組和其他包含有限個元素的可列迭代對象中所有元素最大值、最小值以及所有元素的和。函數max()和min()還支持default參數和key參數,其中default參數表示對象為空時默認返回的最大值或者最小值。key參數用來指定比較大小的依據或者規則,可以是函數或者lambda表達式。函數sum()還支持start參數,用來指定求和的初始值。
-
sorted()對列表、元組、字典、集合或其他可迭代對象排序并返回新對象
-
reversed()對可迭代對象進行翻轉并返回。
-
enumerate()枚舉函數,枚舉可迭代對象中的元素(包含索引和值的元組),返回可迭代的對象
-
range()范圍函數:語法格式為range([start,]end[,step]) start參數默認為0,step參數默認為1
-
zip()壓縮函數:把多個可迭代對象的元素壓縮在一起,返回一個可迭代的zip對象
-
compile() 將一個字符換編譯為字節代碼
-
eval()執行一個字符串表達式,并返回表達式id值。
-
exec()執行字符串或者文件中的代碼,無返回值
總結
- 上一篇: HDU4812-D Tree-树分治
- 下一篇: lol劫6级前中单对拼用符文护甲穿透或者