日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python可以这样学读书笔记_Python小白的读书笔记

發(fā)布時間:2025/3/15 python 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python可以这样学读书笔记_Python小白的读书笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這些筆記都是手敲到EverNote上的,為書中1至9章的內(nèi)容,都是很基礎(chǔ)的知識,沒事兒的時候拿來瀏覽一下。當(dāng)然在筆記中,可以用一些高亮的顏色來標(biāo)識重點(diǎn),我把它c(diǎn)opy過來,高亮的標(biāo)識已經(jīng)不在了!

變量和簡單數(shù)據(jù)類型

變量名應(yīng)既簡短又具有描述性,name_length比length_of_persons_name好;

慎用小寫字母l和大字字母O,可能被錯看成數(shù)字1和0;

字符串的幾個方法:name.title()、name.upper()、name.lower();

字符串還有哪些方法?

使用+號合并字符串的方法稱為拼接;

空白泛指任何非打印字符,如空格、制表符和換行符(\t \n),可使用空白來組織輸出,以使其更易讀;

字符串刪除空白,lstrip(),rstrip(),strip();

SyntaxError語法錯誤是最不具體的錯誤類型,因此可能難以找出并修復(fù);

空格不影響Python計算表達(dá)式的方式;

使用str()避免類型錯誤;

不要企圖編寫完美無缺的代碼,先編寫行之有效的代碼,再決定是對其做進(jìn)一步修改,還是轉(zhuǎn)而去編寫新代碼;

列表簡介

列表由一系列按特定順序排列的元素組成,是有序集合;

給列表指定一個表示復(fù)數(shù)的名稱(letters、names);

索引從0而不是1開始,這與列表操作的底層實現(xiàn)相關(guān);

可以首先創(chuàng)建一個空列表,用于后續(xù)存儲數(shù)據(jù);

修改列表元素 motorcycles[0] = 'ducati';

在列表末尾添加元素 motorcycles.append('ducati');

在列表中插入元素 motorcycles.insert(0,'ducati')

使用del語句刪除元素 del motorcycles[0];

方法pop()可刪除列表末尾的元素,并讓你能夠接著使用它,popped_motorcycle = motorcycles.pop();術(shù)語彈出(pop)源自這樣的類比,列表就像一個棧,而刪除列表末尾的元素相當(dāng)于彈出棧頂元素;

彈出列表中任何位置處的元素 first_owned = motorscycles.pop(0);

被彈出的元素就不再在列表中了;

根據(jù)值刪除元素 motorcycles.remove('ducati');

永久性修改列表元素的排列順序 cars.sort(),相反的順序排列cars.sort(reverse=True);

sorted(cars),sorted(cars,reverse=True) 使用函數(shù)對列表進(jìn)行臨時排序;

注意方法和函數(shù)的區(qū)別;

倒著打印列表 print(cars.reverse()),不是按字母順序相反的順序排列列表元素,而只是反轉(zhuǎn)列表元素的排列順序;

確定列表的長度 len(cars);

IndexError發(fā)生索引錯誤卻找不到解決辦法,嘗試將列表或其長度打印出來;

列表操作

Python根據(jù)縮進(jìn)來判斷代碼行與前一個代碼行的關(guān)系;

創(chuàng)建數(shù)值列表:

for value in range(1,5):

print(value)

從第一個值開始,不包含第二個值

創(chuàng)建數(shù)字列表 numbers = list(range(1,6)),even_numbers = list(range(2,11,2)) 指定步長不斷加2;列表解析 squares = [value**2 for value in range(1,11)],表達(dá)式為value**2,for循環(huán)用于給表達(dá)式提供值;

處理列表的部分元素稱之為切片;

players = ['charles','martina','michael','florence','eli']

print(players[0:3])

['charles','martina','michael']

print(players[:4])

['charles','martina','michael','florence']

print(players[-3:])

['michael','florence','eli']復(fù)制列表

# 使用切片創(chuàng)建1個新的副本,分別獨(dú)立。

my_foods = ['pizza','falafel','carrot cake']

friends_foods = my_foods[:]

# 2個變量指向同一個列表,未創(chuàng)建新的副本。

my_foods = ['pizza','falafel','carrot cake']

friends_foods = my_foods

元組

列表非常適合用于存儲程序運(yùn)行期間可能變化的數(shù)據(jù)集,是可以修改的;

不可變的列表被稱為元組,Python將不能修改的值稱為不可變的;

定義元組 dimensions = (200,50),可以用索引訪問其元素;

dimensions[0] = 250,將報錯 TypeError:'tuple' object does not support item assignment

雖然不能修改元組的元素,但可以給存儲元組的變量賦值 dimensions = (400,100);

如果需要存儲的一組值在程序的整個生命周期內(nèi)都不變,可使用元組;

設(shè)置代碼格式

PEP 8格式設(shè)置指南;

在文檔中插入空格而不是制表符;

每行不超過80個字符;

空行不會影響代碼運(yùn)行,但會影響代碼可讀性;

if語句

每條if語句的核心都是一個值為True或False的表達(dá)式,這種表達(dá)式被稱為條件測試;

一個等號是陳述,兩個等號是發(fā)問;

Python在檢查是否相等時區(qū)分大小寫;

car = 'Audi' 寫函數(shù)car.lower()不會修改存儲在變量car里的值,不會影響原來的變量;

布爾表達(dá)式的結(jié)果要么為True,要么為False;

布爾值常用于記錄條件,如游戲是否在運(yùn)行,或用戶是否可以編輯網(wǎng)站的特定內(nèi)容;

在跟蹤程序狀態(tài)或程序中的條件方面,布爾值提供了一種高效的方式;

else語句讓你能夠指定條件測試未通過時要執(zhí)行操作;

只想執(zhí)行一個代碼塊,Python只執(zhí)行if-elif-else結(jié)構(gòu)中的一個代碼塊;

如果要運(yùn)行多個代碼塊,就使用一系列獨(dú)立的if語句;

確定列表不是空的:

requested_toppings = []

if requested_toppings:

pass

字典

字典將相關(guān)信息關(guān)聯(lián)起來;

字典中可存儲的信息量幾乎不受限制;

有存儲字典的列表、存儲列表的字典、存儲字典的字典;

字典是一系列的鍵-值對;

與鍵相關(guān)聯(lián)的值可以是數(shù)字、字符串、列表及至字典;事實上,可將任何Python對象用作字典的值;

字典是一種動態(tài)結(jié)構(gòu),可隨時在其中添加鍵-值對;

不關(guān)心鍵-值對的添加順序,而只關(guān)心鍵和值之間的關(guān)聯(lián)關(guān)系;

存儲用戶數(shù)據(jù)或自動生成大量鍵-值對時,通常都需要定義一個空字典;

刪除鍵-值對:

alien_0 = {'color':'green','points':5}

del alien_0['points']

# 刪除的鍵-值對將永遠(yuǎn)消失字典可以存儲一個對象的多種信息,也可以存儲眾多對象的同一種信息;

在最后一個鍵-值對后面也加上逗號,為添加下行一個鍵-值對做好準(zhǔn)備;

遍歷字典所有鍵-值對:

for key,value in user_0.items():

pass鍵-值對的返回順序與存儲順序不同,Python不關(guān)心鍵-值對的存儲順序,只跟蹤鍵和值之間的關(guān)聯(lián)關(guān)系;

遍歷字典中的所有鍵:

for name in favorite_languages.keys():

pass遍歷字典時默認(rèn)遍歷所有鍵:

for name in favorite_languages.keys(): 替換為for name in favorite_languages: 輸出將不變;顯示使用keys()代碼更容易理解;按順序遍歷字典中的所有鍵:

for name in sorted(favorite_languages.key()):

pass

# 使用sorted()函數(shù)遍歷字典中的所有值:

for name in favorite_languages.values():

pass

# 提取所有值,沒有考慮值是否重復(fù)通過對包含重復(fù)元素的列表調(diào)用set(),創(chuàng)建一個集合,可以找出列表中獨(dú)一無二的元素:

for name in set(favorite_languages.values()):

pass列表中嵌套字典、字典中嵌套列表、字典中嵌套字典;

用戶輸入

獲得用戶輸入后,將其存儲在一個變量中:

message = input("Tell me something: ")

print(message)提示末尾包含一個空格,可將提示與用戶輸入分開,更清晰;

提示如超過一行,可將提示存儲在一個變量中,再傳遞給函數(shù)input(),這樣使語句清晰:

prompt = "If you tell us who you are,we can personalize the message you see."

prompt += "\nWhat is your first name? "

name = input(prompt)

print(name)

# 運(yùn)算符 += 在存儲prompt中的字符串末尾附加一個字符串使用int()來獲取數(shù)值輸入;

求模運(yùn)算符 % 用來取余數(shù);

while循環(huán)

不斷運(yùn)行,直到指定的條件不滿足;

current_number = 1

while current_number <= 5:

print(current_number)

current_number += 1break 退出循環(huán);

continue 返回到循環(huán)開頭重新開始,并根據(jù)條件測試結(jié)果決定是否繼續(xù)執(zhí)行循環(huán);

遍歷列表的同時對其修改,可使用while循環(huán);

函數(shù)需要在程序中多次執(zhí)行同一項任務(wù);

文檔字符用三引號括起;

形參是函數(shù)完成其工作所需的一項信息;

實參是調(diào)用函數(shù)時傳遞給函數(shù)的信息;

實參傳遞給函數(shù),這個值被存儲在形參中;

函數(shù)定義可能包含多個形參,因此函數(shù)調(diào)用中也可能包含多個實參;

位置實參,要求實參的順序與形參順序相同;

關(guān)鍵字實參,每個實參由變量名和值組成,即名稱-值對,無需考慮實參順序,務(wù)必準(zhǔn)確指定函數(shù)定義中的形參名;

還可以使用列表和字典;

默認(rèn)值,調(diào)用函數(shù)時如給形參提供了實參,將使用提供的實參值,否則將使用形參的默認(rèn)值;

使用默認(rèn)值時,在形參列表中必須先列出沒有默認(rèn)值的形參,再列出有默認(rèn)值的形參,即默認(rèn)值形參放在最后:

def describe_pet(pet_name,animal_type='dog'):

pass

describe_pet('willie')

# Python依然將這個實參視為位置參數(shù)可以混合使用位置實參、關(guān)鍵字實參和默認(rèn)值;

def describe_pet(pet_name,animal_type='dog'):

pass

基于這種定義,在任何情況下都必須給pet_name提供實參;指定該實參的時可以使用位置方式,也可以使用關(guān)鍵字方式,以下對這個函數(shù)的調(diào)用都可行(關(guān)鍵在于形參和實參的對應(yīng)):

# 一條名為Willie的小狗

describe_pet('Willie')

describe_pet(pet_name='Willie')

# 一只名為Harry的倉鼠

describe_pet('Harry', 'hamster')

describe_pet(pet_name='Harry', animal_type='hamster')

describe_pet(animal_type='hamster' ,pet_name='Harry')函數(shù)并非總是直接顯示輸出,它可以處理一些數(shù)據(jù),并返回一個或一組值;

調(diào)用返回值的函數(shù)時,需要提供一個變量,用于存儲返回值;

讓實參變成可選

def get_formatted_name(first_name,last_name,middle_name=''):

passPython將非空字符串解讀為True;

返回字典

def build_person(first_name,last_name):

person = {'first':first_name,'last':last_name}

return person向函數(shù)傳遞列表

def great_users(names):

for name in names:

msg = "Hello, " + name.title() + "!"

print(msg)在函數(shù)中修改列表,對列表所做的任何修改都永久性的,這樣能夠高效地處理大量數(shù)據(jù);

每個函數(shù)只負(fù)責(zé)一項具體工作;

總是可以在一個函數(shù)中調(diào)用另一個函數(shù);

向函數(shù)傳遞列表的副本,這樣函數(shù)所做的任何修改都只影響副本,而絲毫不影響原件;

function_name(list_name[:])

# 切片表示法[:]創(chuàng)建列表的副本除非有充分理由需要傳遞副本,否則還是應(yīng)該將原始列表傳遞函數(shù),避免花時間和內(nèi)存創(chuàng)建副本,從而提高效率,處理大型列表時尤其如此。

傳遞任意數(shù)量的實參(預(yù)先不知道函數(shù)需要接受多少個實參)

def make_pizza(*toppings):

print(toppings)

make_pizza('mushrooms','green peppers','extra cheese')

# 形參名*topping中的星號讓Python創(chuàng)建一個名為toppings的空元組,將實參封裝到一個元組中;結(jié)合使用位置實參和任意數(shù)量實參,必須在函數(shù)定義中將接納任意數(shù)量的實參的形參放在最后;Python先匹配位置實參和關(guān)鍵字實參,再將余下的實參收集到最后一個形參中。

def make_pizza(size,*toppings):

pass使用任意數(shù)量的關(guān)鍵字實參(預(yù)先不知道傳遞給函數(shù)什么樣的信息)

這種情況下,可將函數(shù)編寫成能接受任意數(shù)量的鍵-值對,調(diào)用語句提供了多少就接受多少;

def build_profile(first, last, **user_info):

"""Build a dictionary containing everything we know about a user."""

profile = {}

profile['first_name'] = first

profile['last_name'] = last

forkey, value inuser_info.items():

profile[key] = value

returnprofile

user_profile = build_profile('albert', 'einstein',

location='princeton',

field='physics')

print(user_profile) # 返回一個字典

將函數(shù)存儲在模塊中函數(shù)的優(yōu)點(diǎn)之一可將代碼塊與主程序分離;

將函數(shù)存儲在被稱為模塊的獨(dú)立文件中,再將模塊導(dǎo)入到主程序中;

將函數(shù)存儲在獨(dú)立文件中,可隱藏程序代碼的細(xì)節(jié),將重點(diǎn)放在程序的高層邏輯上;

模塊是擴(kuò)展名為.py的文件,包含要導(dǎo)入到程序中的代碼;

import讓Python打開文件,并將其中的所有函數(shù)都復(fù)制到這個程序中,看不到復(fù)制的過程;

導(dǎo)入整個模塊的調(diào)用方法,module_name.function_name();

導(dǎo)入特定函數(shù),from module_name import function_name,顯式地導(dǎo)入函數(shù),調(diào)用時只需要指定其名稱;

使用as給函數(shù)指定別名,from pizza import make_pizza as mp;

使用as給模塊指定別名,import pizza as p;

導(dǎo)入所有函數(shù),from pizza import *,最好不要采用這種方法;

要么只導(dǎo)入你需要使用的函數(shù),要么導(dǎo)入整個模塊并使用句點(diǎn)表示法;

函數(shù)編寫指南給函數(shù)指定描述性名稱,使用小寫字母和下劃線;

使用文檔字符串簡要注釋;

給形參指定默認(rèn)值時,等號兩邊不要有空格;

代碼長度不要超過79字符;

使用2個空行將相鄰的函數(shù)分開;

import應(yīng)放在文件開頭,除非文件開頭使用了注釋來描述程序;

類表示現(xiàn)實世界中的事物和情景的類;

一大類對象都有通用的行為;

根據(jù)類來創(chuàng)建對象被稱為實例化;

class Dog():

"""A simple attempt to model a dog."""

def__init__(self, name, age):

"""Initialize name and age attributes."""

self.name = name

self.age = age

def sit(self):

"""Simulate a dog sitting in response to a command."""

print(self.name.title() + " is now sitting.")

def roll_over(self):

"""Simulate rolling over in response to a command."""

print(self.name.title() + " rolled over!")

my_dog = Dog('willie', 6)

your_dog = Dog('lucy', 3)

print("My dog's name is " + my_dog.name.title() + ".")

print("My dog is " + str(my_dog.age) + " years old.")

my_dog.sit()

print("\nMy dog's name is " + your_dog.name.title() + ".")

print("My dog is " + str(your_dog.age) + " years old.")

your_dog.sit()

首字母大寫的名稱指的是類;

類中的函數(shù)稱為方法;

__init__()是一個特殊方法,創(chuàng)建類實例時自動運(yùn)行;

自動傳遞,創(chuàng)建實例時自動傳入實參self,它是一個指向?qū)嵗旧淼囊?#xff0c;讓實例能夠訪問類中的屬性和方法;(自己的理解是:讓實例與類創(chuàng)建關(guān)聯(lián))

self為前綴的變量都可供類中的所有方法使用;

my_dog = Dog('willie', 6)

# __init__()并未顯式地包含return語句,但自動返回一個表示這條小狗的實例,并存儲在變量my_dog中

class Car():

"""A simple attempt to represent a car."""

def__init__(self, manufacturer, model, year):

"""Initialize attributes to describe a car."""

self.manufacturer = manufacturer

self.model = model

self.year = year

self.odometer_reading = 0

類中每個屬性都必須有初始值,哪怕這個值是0或空字符串;

如是在__init__()內(nèi)指定初始值,就無需包含為它提供初始值的形參;

類編寫好后,你的大部分時間都將花在使用根據(jù)類創(chuàng)建的實例上;

一個類繼承另一個類,將自動獲得另一個類的所有屬性和方法;

子類繼承了父類的所有屬性和方法,同時還可以定義自己的屬性和方法;

創(chuàng)建子類時,父類必須包含在當(dāng)前文件中,且位于子類前面;

class Car():

pass

class Electric(Car):

"""電動汽車的獨(dú)特之處"""

def __init__(self,make,model,year):

"""初始化父類的屬性"""

super().__init__(make,model,year)

給子類定義屬性和方法;

重寫父類方法;

使用繼承時,可讓子類保留從父類那里繼承而來的精華,并剔除不需要的糟粕;

將實例用作屬性;

現(xiàn)實世界的建模方法并沒有對錯之分,有些方法效率高,但要找出來需要經(jīng)過一定的實踐;

編寫出高效、準(zhǔn)確的代碼,都是經(jīng)過一定的過程;

先找出讓你能夠編寫出可行代碼的方式,再嘗試讓代碼更為組織有序,即先正確運(yùn)行,再組織代碼;

類代碼風(fēng)格駝峰命名法

每個模塊、類都應(yīng)包含一個文檔字符串;

在模塊中,可使用2個空行分隔類;在類中,可使用1個空行來分隔方法;

需要同時導(dǎo)入標(biāo)準(zhǔn)模塊和自己編寫的模塊時,先導(dǎo)入標(biāo)準(zhǔn)模塊,再添加1個空行,然后導(dǎo)入自己編寫的模塊;

總結(jié)

以上是生活随笔為你收集整理的python可以这样学读书笔记_Python小白的读书笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。