1. 程式人生 > >《Python基礎教程(第三版)》閱讀筆記暨Python3入門基礎教程

《Python基礎教程(第三版)》閱讀筆記暨Python3入門基礎教程

第一章、快速上手:基礎知識

'''
第一章:基礎知識
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!")

第九章、魔法方法、特性和迭代器