《Python基礎教程(第三版)》閱讀筆記暨Python3入門基礎教程
阿新 • • 發佈:2018-12-31
第一章、快速上手:基礎知識
''' 第一章:基礎知識 1、python無需加分號,加了也無所謂 2、Python / 除法的結果為浮點數,如果想要整除則要使用//,整除會向下取整,也就是: 10//-3 ==-4 3、Python3中,所有的字串都是Unicode字串 ''' # 冪運算 2**4 ''' # 獲取使用者輸入 x=input("x:") #此時x為字串 y=input("y:") print(int(x)*int(y)) ''' # 可使用變數來引用函式 import math foo=math.sqrt print(foo(9)) #原始字串,會在字串中包含任何字元,原始字串的最後一個字元不能是反斜槓 print(r"C:\nowhere") #字串的編碼 #最好使用UTF-8,實際上它也是預設的編碼 "Hello,World!".encode("ASCII") "Hello,World!".encode("UTF-8") "Hello,World!".encode("UTF-32") ''' 函式速查: pow(a,b) 冪運算 abs() 絕對值 round() 圓整到最接近的整數,並在兩個整數一樣接近時圓整到偶數,相當於四捨五入 math.floor() 向下取整,要import math math.ceil() 向上取整 sqrt() 計算平方根 需要from math import sqrt '''
第二章、列表和元組
1、列表是可以修改的,而元組不可以
2、列表的訪問方式:
numbers=[1,2,3,4,5,6,7,8,9,10]
print(numbers[5]) #索引 結果為6
print(numbers[3:-3]) #切片 結果為[4,5,6,7]
print(numbers[1:9:2]) #以步長為2進行提取 結果為[2,4,6,8]
print(numbers[5:1:-1]) #從右往左提取元素,結果為[6,5,4,3]
3、列表具有加法和乘法,
>>> 'python' * 5 'pythonpythonpythonpythonpython' >>> [42] * 10 [42, 42, 42, 42, 42, 42, 42, 42, 42, 42]
4、成員資格
使用運算子in可以判斷某元素是否在某列表裡,返回結果為布林值
>>> permissions = 'rw'
>>> 'w' in permissions
True
database = [
['albert', '1234'],
['dilbert', '4242'],
['smith', '7524'],
['jones', '9843']
]
username="jones"
pin="9843"
if [username, pin] in database: print('Access granted')
5、內建函式len、max、min可以獲取列表的長度、最大值、最小值
6、刪除元素
>>> names = ['Alice', 'Beth', 'Cecil', 'Dee-Dee', 'Earl']
>>> del names[2]
>>> names
['Alice', 'Beth', 'Dee-Dee', 'Earl']
7、給切片賦值
通過切片賦值的方式可以替換為長度與其不同的序列
>>> name = list('Perl')
>>> name[1:] = list('ython')
>>> name
['P', 'y', 't', 'h', 'o', 'n']
通過切片還可以在不替換原有元素的情況下插入新元素
>>> numbers = [1, 5]
>>> numbers[1:1] = [2, 3, 4]
>>> numbers
[1, 2, 3, 4, 5]
8、列表方法
append() #在列表末尾新增物件
extend() #同時將多個物件附加到列表末尾
clear() #清空列表的內容
count() #計算指定元素在列表中出現了多少次
index() #在列表中查詢指定值第一次出現的索引
insert() #將一個物件插入列表
pop() #從末尾刪除一個元素並返回這個元素
remove() #刪除第一個為指定值的元素,注意,如果不存在指定的元素,將會報錯
>>> x = ['to', 'be', 'or', 'not', 'to', 'be']
>>> x.remove('be')
>>> x
['to', 'or', 'not', 'to', 'be']
reverse() #倒序
sort() #排序 兩者都只是修改列表,但返回None
#其他
list(seq) #將序列轉換為列表
tuple(seq) #將序列轉換為元組
第三章、使用字串
1、字串的基本操作
所有標準序列操作都適用於字串,但是字串是不可變的,所以所有的元素賦值和切片賦值都是非法的
2、超精簡版的設定字串的格式
>>> "{3} {0} {2} {1} {3} {0}".format("be", "not", "or", "to")
'to be or not to be'
3、字串方法
center() #通過在兩邊新增填充字元(預設為空格)讓字串居中
>>> "The Middle by Jimmy Eat World".center(39, "*")
'*****The Middle by Jimmy Eat World*****'
find #在字串中查詢子串,如果找到則返回第一個字元的索引,否則返回-1
#相關方法:rfind、 index、 rindex、 count、 startswith、 endswith
join #其作用與split相反,用於合併序列的元素
>>> dirs = '', 'usr', 'bin', 'env'
>>> '/'.join(dirs)
'/usr/bin/env
lower #返回字串的小寫版本
replace #將指定子串都替換為另一個字串,並返回替換後的結果
>>>'This is a test'.replace('is', 'eez')
'Theez eez a test'
split #與join相反,用於將字串拆分為序列
>>> '/usr/bin/env'.split('/')
['', 'usr', 'bin', 'env']
strip #將字串開頭和末尾的空白刪除,並返回刪除後的結果。還可以指定刪除那些字元
>>> '*** SPAM * for * everyone!!! ***'.strip(' *!')
'SPAM * for * everyone'
#判斷字串是否滿足特定的條件
isalnum、 isalpha、 isdecimal、 isdigit、 isidentifier、 islower、 isnumeric、
isprintable、 isspace、 istitle、 isupper
第四章、當索引行不通時
1、建立和使用字典
phonebook = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
2、函式dict
從其他對映或鍵值對序列建立字典
>>> items = [('name', 'Gumby'), ('age', 42)]
>>> d = dict(items)
>>> d
{'age': 42, 'name': 'Gumby'}
>>> d['name']
'Gumby'
3、字典方法
clear #刪除所有的字典項,所有指向同一個字典的變數都將為空
copy #返回一個新字典,但是這個方法執行的是淺拷貝
from copy import deepcopy
dc = deepcopy(d) #深拷貝
fromkeys #建立一個新字典,其中包含指定的鍵,且每個鍵對應的值都是None
get #根據鍵來獲取值,如果不存在則返回None,比[]更安全
pop #根據指定鍵刪除鍵值對
popitem #隨機地彈出一個字典項
第五章、條件、迴圈及其他語句
1、python縮排標準也是最佳的做法是隻使用空格(而不使用製表符),且每級縮排4個空格。
2、==用來檢查兩個物件是否相等,而is用來檢查兩個物件是否相同
3、pass 什麼都不做,del 刪除物件,exec用於將字串作為python程式執行,函式eval計算用字串表達的表示式並返回結果。
第六章、抽象
1、帶*號的引數用於收集剩下的引數
def print_params_2(title, *params):
print(title)
print(params)
>>> print_params_2('Params:', 1, 2, 3)
Params:
(1, 2, 3)
第七章、再談抽象
1、要讓方法或屬性成為私有的,只需讓其名稱以兩個下劃線打頭即可
2、Python分為類屬性和例項屬性,類屬性在__init__()外初始化,相當於C++中的靜態成員變數。例項屬性相當於C++的成員變數。
3、抽象基類
from abc import ABC, abstractmethod
class Talker(ABC):
@abstractmethod
def talk(self):
pass
第八章、異常
1、捕獲異常
try:
x = int(input('Enter the first number: '))
y = int(input('Enter the second number: '))
print(x / y)
except ZeroDivisionError:
print("The second number can't be zero!")