python 列表 换行_python基础语法学习——参考Python Crash Course
第一章:python在各個(gè)系統(tǒng)之間的安裝和使用(略)
第二章:
變量
2.1.每個(gè)變量都存儲(chǔ)了一個(gè)值 ——與變量相關(guān)聯(lián)的信息.在程序中可隨時(shí)修改變量的值,而 Python將始終記錄變量的最新值。
2.2變量名只能包含字母、數(shù)字和下劃線,不能有空格。變量名可以字母或下劃線打頭,但不能以數(shù)字打頭。
小練習(xí):將一條消息存儲(chǔ)到變量中,再將其打印出來。#print只能打印變量和字符串,不能打數(shù)字和字母!
Liuyuanji="He is so handsome!" print(Liuyuanji)字符串
2.3字符串就是一系列字符。在Python中,用引號(hào)括起的都是字符串,其中的引號(hào)可以是單引號(hào),也可以是雙引號(hào).沒什么區(qū)別. 單獨(dú)的字符串需要有引號(hào)來引用,數(shù)字就不用了。
"He said'i don't like you.'"2.3.1將字符串進(jìn)行大小寫的改變——X.title()title() 以首字母大寫的方式顯示每個(gè)單詞,即將每個(gè)單詞的首字母都改為大寫。
AK="taylor swift" print(AK.title())2.3.2 將字母全部變成大寫——x.upper();將字母全部變成小寫x.lower()
2.3.3合并(拼接)字符串,在python中使用“+”號(hào)來連接字符串.
A="John" B="NYU" C=A+" "+B print(C)可以再來一句話給出一個(gè)例子來試驗(yàn)。這里需要注意的地方(我自己寫出錯(cuò)的地方):在print語句中,如果是單純的字符(字母和符號(hào)),是需要用引號(hào)隔開的,如果是字符串就不用啦)
A="John,I love you baby!" print("Hello,I wanna tell you:"+A)2.3.4使用制表符或換行符來添加空白:
可使用字符組合 t來添加制表符(多一個(gè)tap);可以使用n來添加換行符。害,我剛才又出現(xiàn)了一個(gè)錯(cuò)誤:制表符是要放在字符前面的!然后最后一行不要換行了.......
print("tHello,John!") print("name:nage:ngender:")ps:還可在同一個(gè)字符串中同時(shí)包含制表符和換行符。字符串 "nt" 讓 Python 換到下一行,并在下一行開頭添加一個(gè)制表符。
2.3.5刪除空白:
1. Python 能夠找出字符串開頭和末尾多余的空白。要確保字符串末尾沒有空白,可使用方法 .rstrip() 這里的刪除只是暫時(shí)的,也可以理解為把刪除空白格的變量成了一個(gè)新的變量。要永久刪除這個(gè)字符串中的空白,必須將刪除操作的結(jié)果存回到變量中。
2.同理:還可以剔除字符串開頭的空白,或同時(shí)剔除字符串兩端的空白。為此,可分別使用方法 lstrip() 和 strip() :(具體不寫example了)
A="NYU " B=A.rstrip() print(B) A=B print(A)2.4 數(shù)字
2.4.1 整數(shù)運(yùn)算(略):加( + )減( - )乘( * )除( / );Python 使用兩個(gè)乘號(hào)表示乘方運(yùn)算
2.4.2浮點(diǎn)數(shù)(小數(shù))(略)
2.4.3關(guān)于將非字符數(shù)變成字符數(shù):str(x) 我的錯(cuò)誤我以為是x.str()
age=20 print("John is "+str(age)+" old")2.5注釋(一個(gè)很有用的技能)
在 Python 中,注釋用井號(hào)( # )標(biāo)識(shí)。井號(hào)后面的內(nèi)容都會(huì)被 Python 解釋器忽略。
print("I LOVE TAYLOR SWIFT!")#DBDFHOIHDOICIOSAFOIIFCEO在本章中,學(xué)習(xí)了:如何使用變量;如何創(chuàng)建描述性變量名以及如何消除名稱錯(cuò)誤和語法錯(cuò)誤;字符串是什么,以及如何使用小寫、大寫和首字母大寫方式顯示字符串;使用
空白來顯示整潔的輸出,以及如何剔除字符串中多余的空白;如何使用整數(shù)和浮點(diǎn)數(shù);使用數(shù)值數(shù)據(jù)時(shí)需要注意的意外行為。你還學(xué)習(xí)了如何編寫說明性注釋,讓代碼對(duì)你和其
他人來說更容易理解。最后,你了解了讓代碼盡可能簡(jiǎn)單的理念。
第三章:列表簡(jiǎn)介
在 Python 中,用方括號(hào)( [] )來表示列表:
My Favorite singer=([Taylor Swift],[justin bieber])#這是我第一次的錯(cuò)誤 MY Favorite singer=["Taylor Swift","Justin Bieber"]#這個(gè)就是第二次正確的一個(gè)列表3.1.1訪問列表元素,只需將該元素的位置或索引告訴 Python 即可。(索引位置是從0開始而不是1,算是常識(shí))
MY Favorite singer=["Taylor Swift","Justin Bieber"] print(MY Favorite singer[1])#這樣給出的就是Justin Bieber了3.1.2使用列表中的各個(gè)值。這個(gè)其實(shí)和一開始用非字符串當(dāng)做字符串是一樣的。我覺得如果列表中的元素不是字符串的話,可能還需要用一個(gè)str()吧。
bicycles = ['trek', 'cannondale', 'redline', 'specialized']message = "My first bicycle was a " + bicycles[0].title() + "."3.2 修改、添加和刪除元素
3.2.1 修改列表元素: 修改列表元素的語法與訪問列表元素的語法類似。要修改列表元素,可指定列表名和要修改的元素的索引,再指定該元素的新值。
bicycles = ['trek', 'cannondale', 'redline', 'specialized'] bocycles[2]="red" print(bicycles)3.2.2 增加列表元素:X.append()將一個(gè)新的元素加入到列表的末尾。(注意,不是加新的列表,而是列表元素哦,我一開始學(xué)的時(shí)候列表個(gè)數(shù)和列表元素老是分不清)
ps:小技巧:可首先創(chuàng)建一個(gè)空列表,用于存儲(chǔ)用戶將要輸入的值,然后將
用戶提供的每個(gè)新值附加到列表中。
3.2.3在列表中插入元素,如果要插入的話,確定兩個(gè)變量就好咯——索引,和元素內(nèi)容。
用X.insert(a,b)——a為列表中的索引,b為元素內(nèi)容:
bicycles = ['trek', 'cannondale', 'redline', 'specialized'] bicycles.insert(3,'good') print(bicycles)3.2.4從列表中刪除元素
如果知道要?jiǎng)h除的元素在列表中的位置,可使用 del 語句。注意,是語句。
bicycles = ['trek', 'cannondale', 'redline', 'specialized'] del bicycles[1]#語句不需要加括號(hào)吧 print(bicycles)使用方法 pop() 刪除元素。pop()可以刪除列表中的最后一個(gè)元素.如果需要使用刪去的那個(gè)元素,創(chuàng)建一個(gè)新的變量保存吧。
bicycles = ['trek', 'cannondale', 'redline', 'specialized'] Ok=bicycles.pop()#Ok就是代表了最后一個(gè)元素了 print(bicycles)#這個(gè)時(shí)候就會(huì)給出失去最后一個(gè)元素的原本列表bicycles了3.2.5從列表中彈出任何位置的元素。用pop(x),其中x就是代表元素在列表中的索引位置。如果想使用:先用pop()刪去,然后用新的變量表示刪去的,再引用新的變量,就開業(yè)彈出了。 ps:如果用del語句刪除就無法再引用了,如果用pop()就還可以。(例子也可以用上面的)
3.2.6根據(jù)值刪除元素 remove(x)具體的比pop(x)差不多吧我感覺。
bicycles = ['trek', 'cannondale', 'redline', 'specialized'] apple=bicycles.remove("redline") print(bicycles)3.3組織列表
3.3.1 使用方法 sort() 對(duì)列表進(jìn)行永久性排序(按字母順序排序);你還可以按與字母順序相反的順序排列列表元素,為此,只需向 sort() 方法傳遞參數(shù) reverse=True 。這里的永久性我的理解就是電腦刪去了原本的樣子沒有copy了。徹底改變回不去。
cars = ['bmw', 'audi', 'toyota', 'subaru'] cars.sort() print(cars) cars.sort(reverse=True)#為什么是這樣的形式呢? print(cars)3.3.2使用函數(shù) sorted() 對(duì)列表進(jìn)行臨時(shí)(按字母順序)排序。這樣的話就相當(dāng)于出現(xiàn)了新的排序,但是原本的也有備份吧。
cars = ['bmw', 'audi', 'toyota', 'subaru'] cars.sorted() print(cars)3.3.3倒著打印列表 reverse().將列表的元素順序顛倒顯示。reverse的修改也是永久性的,無備份。
3.3.4確定列表長(zhǎng)度——len()ps:列表長(zhǎng)度從1開始
關(guān)于索引的順序:從左往右從0開始,從右往左從-1開始。
在本章中,學(xué)習(xí)了:列表是什么以及如何使用其中的元素;如何定義列表以及如何增刪元素;如何對(duì)列表進(jìn)行永久性排序,以及如何為展示列表而進(jìn)行臨時(shí)排序;如何確定列表的長(zhǎng)度,以及在使用列表時(shí)如何避免索引錯(cuò)誤。
第 4 章 操作列表
4.1 遍歷整個(gè)列表——用for循環(huán)就可 (for X in Y:)
4.1.2 在 for 循環(huán)中執(zhí)行更多的操作,其實(shí)也就多了之前的結(jié)合。
magicians = ['alice', 'david', 'carolina'] for x in magicians:print(x.title()+“is a good person!”)在 for 循環(huán)后面,沒有縮進(jìn)的代碼都只執(zhí)行一次,而不會(huì)重復(fù)執(zhí)行。縮進(jìn)不縮進(jìn),關(guān)乎著邏輯的問題。只有要在 for 循環(huán)中對(duì)每個(gè)元素執(zhí)行的代碼需要縮進(jìn)(目前)。還有一個(gè)!!!千萬別忘記了冒號(hào)。
4.2 創(chuàng)建數(shù)值列表
4.2.1 使用函數(shù) range()
for X in range(a,b):print(x)#給出來的結(jié)果應(yīng)該是a到b-1 for X in range(a,b,3)print(x)#這里range多了一個(gè)步長(zhǎng),算是數(shù)列中的差吧 不寫默認(rèn)為14.2.2 使用 range() 創(chuàng)建數(shù)字列表:用list(),將range()變成list()中的參數(shù)。
4.2.3 max(); min();sum()
4.2.4.列表解析 用一行代碼來實(shí)現(xiàn)循環(huán)
squares = [value**2 for value in range(1,11)] print(squares)就個(gè)人感覺,如有小misson:一般先創(chuàng)建一個(gè)空列表,然后for循環(huán)填進(jìn)去,然后在用for print或者sum 都行。
4.3關(guān)于切片。與函數(shù) range() 很相似吧, Python 在到達(dá)你指定的第二個(gè)索引前面的元素后停止。關(guān)于那種負(fù)數(shù)索引和正數(shù)索引用法和range()一樣。
players = ['charles', 'martina', 'michael', 'florence', 'eli']print(players[0:3])#零對(duì)應(yīng)第一個(gè),一直切到3之前的元素,也就是2print(players[:3])#沒有首個(gè)元素的索引,默認(rèn)從第一個(gè)開始print(players[2:])#沒有尾部元素的索引,默認(rèn)一直開始到最后一個(gè)4.3.2 遍歷切片——用for循環(huán)進(jìn)行列表切片索引就好
4.4.3 復(fù)制列表,可創(chuàng)建一個(gè)包含整個(gè)列表的切片,方法是同時(shí)省略起始索引和終止索引( [:] )
4.4. 4 元組—— Python 將不能修改的值稱為 不可變的 ,而不可變的列表被稱為元組 。元組是圓括號(hào),列表是方括號(hào)。雖然不能修改元組的元素,但可以給存儲(chǔ)元組的變量賦值。因此,如果要修改前述矩形的尺寸,可重新定義整個(gè)元組。(類似于重新寫一個(gè)吧)
在本章中,學(xué)習(xí)了:如何高效地處理列表中的元素;如何使用for 循環(huán)遍歷列表,Python如何根據(jù)縮進(jìn)來確定程序的結(jié)構(gòu)以及如何避免一些常見的縮進(jìn)錯(cuò)誤;如何創(chuàng)建簡(jiǎn)單的數(shù)字列表,以及可對(duì)數(shù)字列表執(zhí)行的一些操作;如何通過切片來使用列表的一部分和復(fù)制列表。你還學(xué)習(xí)了元組(它對(duì)不應(yīng)變化的值提供了一定程度的保護(hù))。
第五章 if語句
5.2 條件測(cè)試
每條if 語句的核心都是一個(gè)值為True 或False 的表達(dá)式,這種表達(dá)式被稱為條件測(cè)試 。
=:賦值;==等于;!=不等于
5.2.1多個(gè)條件測(cè)試(同時(shí)滿足),可以用 and (類似與門);多個(gè)條件測(cè)試(滿足一個(gè)就可),可以用or(類似或門)
5.2.2判斷特定的值是否已包含在列表中,可使用關(guān)鍵字in;確定特定的值未包含在列表中很重要;在這種情況下,可使用關(guān)鍵字not in
Caffe=["ad","va"]"ad" in Caffe:banned_users = ['andrew', 'carolina', 'david'] user = 'marie' if user not in banned_users: print(user.title() + ", you can post a response if you wish.")5.3 if 語句學(xué)習(xí)
在if 語句中,縮進(jìn)的作用與for 循環(huán)中相同。如果測(cè)試通過了,將執(zhí)行if 語句后面所有縮進(jìn)的代碼行,否則將忽略它們。
John= "handsome" if John="handsome':print("He is so good! i wanna him")5.3.2 if-else 語句,常常用于二選一的狀態(tài):通常else之后直接就是一個(gè)冒號(hào)就好了,因?yàn)橹灰粷M足if,就是else。
if xxxxx:xxxxxxxxxx else: xxxxxxx5.3.3 if-elif-else 結(jié)構(gòu):也就多了一個(gè)選擇吧,多個(gè)elif
ifxxxxx:xxxxxxx elif xxxxx:xxxxxxxx else:xxxxx5.3.4 多個(gè)elif結(jié)構(gòu)。有時(shí)候可以不用else了,可以用一個(gè)具體的elif來代替else,會(huì)使得代碼更加清晰。else 是一條包羅萬象的語句,只要不滿足任何if 或elif 中的條件測(cè)試,其中的代碼就會(huì)執(zhí)行,這可能會(huì)引入無效甚至惡意的數(shù)據(jù)。
上面的幾個(gè)條件結(jié)構(gòu)都是針對(duì)只需要滿足其中一種的情況,如果需要多個(gè)條件獨(dú)立檢驗(yàn)(和有and or 的不一樣的),則我們需要多個(gè)if語句來分開來獨(dú)立檢驗(yàn)。
5.3.5 用if語句使用多個(gè)列表:
available_toppings = ['mushrooms', 'olives', 'green peppers', 'pepperoni', 'pineapple', 'extra cheese'] requested_toppings = ['mushrooms', 'french fries', 'extra cheese'] for requested_topping in requested_toppings:if requested_topping in available_toppings: print("Adding " + requested_topping + ".") else:print("Sorry, we don't have " + requested_topping + ".") print("nFinished making your pizza!")在本章中,學(xué)習(xí)了如何編寫結(jié)果要么為Ture 要么為False 的條件測(cè)試。你學(xué)習(xí)了如何編寫簡(jiǎn)單的if 語句、if-else 語句和if-elif-else 結(jié)構(gòu)。在程序中,你使用了這些結(jié)構(gòu)來測(cè)試特定的條件,以確定這些條件是否滿足。學(xué)習(xí)了如何在利用高效的for 循環(huán)的同時(shí),以不同于其他元素的方式對(duì)特定的列表元素進(jìn)行處理。
第六章 字典
在 Python 中, 字典 是一系列 鍵 — 值對(duì) 。每個(gè) 鍵 都與一個(gè)值相關(guān)聯(lián),你可以使用鍵來訪問與之相關(guān)聯(lián)的值(print(鍵),然后輸出值)。字典用放在花括號(hào) {} 中的一系列鍵 — 值對(duì)表示
cool={"John":"handsome","jack":"ugly"}#字典中間需要用逗號(hào)隔開6.2.2 添加鍵值對(duì),很簡(jiǎn)單就是一行代碼:X[添加的鍵]=添加的值。(x為已知的字典);一般也可以先添加一個(gè)空的字典,然后一點(diǎn)點(diǎn)的往里面填鍵值對(duì)。
6.2.3修改鍵值對(duì)——要修改字典中的值,可依次指定字典名、用方括號(hào)括起的鍵以及與該鍵相關(guān)聯(lián)的新值。其實(shí)和添加差不多。只是鍵名不是新的,而是已經(jīng)存在的。
6.2.4對(duì)于字典中不再需要的信息,可使用 del 語句將相應(yīng)的鍵 — 值對(duì)徹底刪除。
del X[鍵名]
6.2.5 X.items() 可以返回一個(gè)對(duì)應(yīng)的鍵和值:
message={"Name":"John","Age":20,"Gender":"male"} for key,value in message.items():#一定要有2個(gè)變量,分別對(duì)應(yīng)鍵,值print(n"Key is:"+key)print("Value is:"+value)#跑數(shù)字的時(shí)候還需要用str單獨(dú)搞一下。可以考慮使用if elif結(jié)構(gòu)6.2.6遍歷字典中的所有鍵 for循環(huán)+keys()方法 keys() 并非只能用于遍歷;實(shí)際上,它返回一個(gè)列表,其中包含字典中的所有鍵。
6.3 按順序遍歷字典的所有鍵:還是for循環(huán)+sorted()順序功能。
ps:是要獲取所有字典的值的話:for循環(huán)+values()即可。如果值出現(xiàn)了重復(fù),使用set()即可。
favorite_languages = { 'jen': 'python', 'sarah': 'c', 'edward': 'ruby', 'phil': 'python', } print("The following languages have been mentioned:") for language in set(favorite_languages.values()):print(language.title())6.4嵌套
系列字典存儲(chǔ)在列表中,或?qū)⒘斜碜鳛橹荡鎯?chǔ)在字典中,這稱為 嵌套。(類似于換元吧)
alien_0 = {'color': 'green', 'points': 5} alien_1 = {'color': 'yellow', 'points': 10} alien_2 = {'color': 'red', 'points': 15} aliens = [alien_0, alien_1, alien_2]#這個(gè)就嵌套 for alien in aliens: print(alien)pizza = { 'crust': 'thick', 'toppings': ['mushrooms', 'extra cheese'], }#這個(gè)也是嵌套print("You ordered a " + pizza['crust'] + "-crust pizza " + "with the following toppings:")for topping in pizza['toppings']: print("t" + topping)學(xué)習(xí)了:如何定義字典,以及如何使用存儲(chǔ)在字典中的信息;如何訪問和修改字典中的元素,以及如何遍歷字典中的所有信息;如何遍歷字典中所有的鍵 - 值對(duì)、所有的鍵和所有的值;如何在列表中嵌套字典、在字典中嵌套列表以及在字典中嵌套字典。
第 7 章 用戶輸入和 while 循環(huán)
7.1 函數(shù) input()----函數(shù) input() 讓程序暫停運(yùn)行,等待用戶輸入一些文本。獲取用戶輸入后, Python 將其存儲(chǔ)在一個(gè)變量中。
7.1.2 使用 int() 來獲取數(shù)值輸入。int(x)x原本代表的是數(shù)字字符串,用了之后就轉(zhuǎn)變成了數(shù)字類型了(不是字符串)。
7.1.3求模運(yùn)算符 %(用來判斷奇數(shù)偶數(shù))
7.2while 循環(huán)。
就是給了一個(gè)條件(范圍),讓東西停止吧。主要因?yàn)槟莻€(gè)范圍不是給定的(就像那種完整的列表之類,可以用for來搞定)。一直運(yùn)行到while后面的條件不滿足為止。
prompt = "nTell me something, and I will repeat it back to you:" prompt += "nEnter 'quit' to end the program. " message = "" while message != 'quit':message = input(prompt)print(message)7.2.3使用標(biāo)志 while X: x只需要等于true 作為是否進(jìn)行的一個(gè)標(biāo)志即可。
john="Tell me love me ,baby!" john+="nif you do,let us make love." active=True while active:if message==" No!":active=Falseelse:print(message)## False &True 要大寫!7.2.4 使用 break 退出循環(huán),有時(shí)候不方面確定明確的停止條件,就需要用break了。
prompt = "nPlease enter the name of a city you have visited:" prompt += "n(Enter 'quit' when you are finished.) " while True:city = input(prompt) if city == 'quit':break else:print("I'd love to go to " + city.title() + "!")7.2.5 在循環(huán)中使用 continue
要返回到循環(huán)開頭,并根據(jù)條件測(cè)試結(jié)果決定是否繼續(xù)執(zhí)行循環(huán),可使用 continue 語句,它不像 break 語句那樣不再執(zhí)行余下的代碼并退出整個(gè)循環(huán)。
.3.1 在列表之間移動(dòng)元素:創(chuàng)建一個(gè)空的列表,原本的用pop調(diào)出,append調(diào)入,加上while循環(huán)即可。
學(xué)習(xí)了:如何在程序中使用 input() 來讓用戶提供信息;如何處理文本和數(shù)字輸入,以及如何使用 while 循環(huán)讓程序按用戶的要求不斷地運(yùn)行;多種控制 while循環(huán)流程的方式:設(shè)置活動(dòng)標(biāo)志、使用 break 語句以及使用 continue 語句;如何使用 while 循環(huán)在列表之間移動(dòng)元素,以及如何從列表中刪除所有包含特定值的元素;如何結(jié)合使用 while 循環(huán)和字典。
第八章 函數(shù)
函數(shù)是帶名字的代碼塊,用于完成具體的工作。
8.1定義函數(shù) —— def X():x為函數(shù)名(函數(shù)名不需要加引號(hào)哦,不是字符串!) 后面可以直接地調(diào)用函數(shù)名
8.1.2將函數(shù)信息傳遞進(jìn)去——在8.1的基礎(chǔ)上,在括號(hào)里面填入變量,后期使用的時(shí)候變量為什么都可以直接帶入函數(shù)式。可以說 填入的那個(gè)變量是形參,而后面真正調(diào)用進(jìn)去的是實(shí)參。
def greet_user(username): """ 顯示簡(jiǎn)單的問候語 """ print("Hello, " + username.title() + "!") greet_user('jesse')#這里變量就是username8.2傳遞實(shí)參
8.2.1位置實(shí)參——多個(gè)形參和實(shí)參位置順序一一對(duì)應(yīng)。
def greet_user(username,gender):print("Hello, " + username.title() +",you are a"+gender) greet_user('jesse','girl')#實(shí)參還是需要考慮是不是要加引號(hào)的8.2.2關(guān)鍵字實(shí)參——用關(guān)鍵字實(shí)參來調(diào)用 describe_pet() 順序不重要了,因?yàn)樵谛螀⒗锩嬉呀?jīng)將其一一對(duì)應(yīng)。
8.2.3默認(rèn)值實(shí)參,在def的時(shí)候就給參數(shù)賦值,如果不聲明,那就是默認(rèn)參數(shù)為已經(jīng)提前賦過值的。使用默認(rèn)值時(shí),在形參列表中必須先列出沒有默認(rèn)值的形參,再列出有默認(rèn)值的實(shí)參。這讓 Python 依然能夠正確地解讀位置實(shí)參。(有explaination,但是記住比較好)有默認(rèn)值的放在沒有參數(shù)默認(rèn)值的后面。
8.3 返回值
函數(shù)并非總是直接顯示輸出,相反,它可以處理一些數(shù)據(jù),并返回一個(gè)或一組值。函數(shù)返回的值被稱為返回值。 用return函數(shù) return+X
可以返回字典,字符串,列表........
8.4傳遞列表:列表包含的可能是名字、數(shù)字或更復(fù)雜的對(duì)象(如字典)。結(jié)合for對(duì)列表進(jìn)行循環(huán)。
如果要修改列表:老生常談,先建立新列表,然后舊的pop,新的append。當(dāng)然,如果不想原列表修改,可以創(chuàng)建copy版本:切片表示法 [:] 創(chuàng)建列表的副本
print_models(unprinted_designs[:], completed_models)8.5 傳遞任意數(shù)量的實(shí)參——將多個(gè)實(shí)參,用一個(gè)元組封裝。(如果需要用位置實(shí)參,則把代表元組的那個(gè)形參放在最后位置)
8.6使用任意數(shù)量的關(guān)鍵字實(shí)參 :我們無法確認(rèn)input會(huì)出現(xiàn)什么并且和什么一一對(duì)應(yīng)時(shí),我們可以將一個(gè)形參形式為字典。通過我們自己在那個(gè)字典中的鍵值對(duì)一一對(duì)應(yīng)(for遍歷),便可得到很好地信息。
def build_profile(first, last, **user_info): """ 創(chuàng)建一個(gè)字典,其中包含我們知道的有關(guān)用戶的一切 """ profile = {}profile['first_name'] = first profile['last_name'] = last for key, value in user_info.items():profile[key] = value return profile user_profile = build_profile('albert', 'einstein', location='princeton', field='physics') print(user_profile) #這里的**user_info就是字典,加上我們用的for 在字典中的遍歷,就可以得到完整消息。8.6 將函數(shù)存儲(chǔ)在模塊中 用import+函數(shù)名
8.6.2使用 as 給函數(shù)指定別名 from xxx import xx as xxx. import xxx as xxxx.
8.6.3使用星號(hào)( * )運(yùn)算符可讓 Python 導(dǎo)入模塊中的所有函數(shù)(用的不多,如果是大模塊函數(shù),不得歇菜)
學(xué)習(xí)了:如何編寫函數(shù),以及如何傳遞實(shí)參,讓函數(shù)能夠訪問完成其工作所需的信息;如何使用位置實(shí)參和關(guān)鍵字實(shí)參,以及如何接受任意數(shù)量的實(shí)參;顯示輸出的函數(shù)和返回值的函數(shù);如何將函數(shù)同列表、字典、 if 語句和 while 循環(huán)結(jié)合起來使用。還知道了如何將函數(shù)存儲(chǔ)在被稱為 模塊 的獨(dú)立文件中。
第九章 類
編寫類時(shí),你定義一大類對(duì)象都有的通用行為。基于類創(chuàng)建 對(duì)象 時(shí),每個(gè)對(duì)象都自動(dòng)具備這種通用行為,然后可根據(jù)需要賦予每個(gè)對(duì)象獨(dú)特的個(gè)性。
類,就是對(duì)象。類里面構(gòu)造成員變量和成員函數(shù);函數(shù)想成是方法,變量想成屬性。
9.1.1 創(chuàng)建 Dog 類,給與這個(gè)特別的dog類特別的function——class x()
class Dog():""" 一次模擬小狗的簡(jiǎn)單嘗試 """def __init__(self, name, age): """ 初始化屬性 name 和 age"""self.name = name self.age = age#這幾步是必不可少的初始化過程!def sit(self): """ 模擬小狗被命令時(shí)蹲下 """ print(self.name.title() + " is now sitting.") def roll_over(self): """ 模擬小狗被命令時(shí)打滾 """ print(self.name.title() + " rolled over!")9.1.2 類中的函數(shù)都叫方法,普遍適用。(我目前的感覺好像如果沒有必要?jiǎng)?chuàng)造類的話,可以直接創(chuàng)建函數(shù),省去了很多麻煩)
方法 __init__() 定義成了包含三個(gè)形參: self 、 name 和 age 。在這個(gè)方法的定義中,形參 self 必不可少,還必須位于其他形參的前面。以 self 為前綴的變量都可供類中的所有方法使用,我們還可以通過類的任何實(shí)例來訪問這些變量。
換句話說:self就是你一開始先創(chuàng)建了一個(gè)class,但是沒有給具體的名字之前的統(tǒng)一名字,就像你在中國(guó)出生,你不知道叫什么名字,但是我可以喊你中國(guó)人。self是在為class編寫instance method的時(shí)候,放在變量名的第一個(gè)位置的站位詞。在具體的method中(class中的方法)可以不用self這個(gè)變量(def method(self)即可,在method里面都寫self,方便后面出現(xiàn)了真的實(shí)例X后,可以直接調(diào)用)。
方法 __init__() 并未顯式地包含 return 語句,但 Python 自動(dòng)返回一個(gè)表示這條小狗的實(shí)例。我們將這個(gè)實(shí)例存儲(chǔ)在變量 my_dog 中。給出實(shí)例后,后面需要調(diào)用方法,用實(shí)例.函數(shù)名()即可。
class Dog(): --snip--my_dog = Dog('willie', 6)# my_dog就是實(shí)參print("My dog's name is " + my_dog.name.title() + ".")print("My dog is " + str(my_dog.age) + " years old.")給屬性和方法需要名字正常一點(diǎn),方便能直接看出來方法是什么意思。
9.2給屬性設(shè)定默認(rèn)值(self.X=一個(gè)值)在self的時(shí)候這樣給出,就相當(dāng)于設(shè)定了默認(rèn)值了。
9.3修改屬性的值
方法一:直接訪問實(shí)例,給他賦值:X=Y;
方法二:通過方法來修改:給出一個(gè)def方法,然后給這個(gè)方法中一個(gè)實(shí)參。
class Car(): --snip-- def update_odometer(self, mileage): """ 將里程表讀數(shù)設(shè)置為指定的值 """ self.odometer_reading = mileage my_new_car = Car('audi', 'a4', 2016) print(my_new_car.get_descriptive_name())my_new_car.update_odometer(23) my_new_car.read_odometer()方法三:通過方法對(duì)屬性的值進(jìn)行遞增(一種新的代碼方法,不是直接賦值,而是用x+=Y)不停的給方法輸入不同的y來達(dá)到遞增的效果。
9.3 繼承
編寫類時(shí),并非總是要從空白開始。如果你要編寫的類是另一個(gè)現(xiàn)成類的特殊版本,可使用 繼承 。一個(gè)類繼承另一個(gè)類時(shí),它將自動(dòng)獲得另一個(gè)類的所有屬性和方法;原有的類稱為父類而新類稱為子類 。子類繼承了其父類的所有屬性和方法,同時(shí)還可以定義自己的屬性和方法。
class Car(): """ 一次模擬汽車的簡(jiǎn)單嘗試 """ def __init__(self, make, model, year): self.make = make self.model = model self.year = year self.odometer_reading = 0 def get_descriptive_name(self): long_name = str(self.year) + ' ' + self.make + ' ' + self.modelreturn long_name.title() def read_odometer(self): print("This car has " + str(self.odometer_reading) + " miles on it.") def update_odometer(self, mileage): if mileage >= self.odometer_reading: self.odometer_reading = mileage else: print("You can't roll back an odometer!") def increment_odometer(self, miles): self.odometer_reading += milesclass ElectricCar(Car): """ 電動(dòng)汽車的獨(dú)特之處 """def __init__(self, make, model, year): """ 初始化父類的屬性 """super().__init__(make, model, year)##這個(gè)函數(shù)很特殊,用init來調(diào)用父類的方法,注意,后面的參數(shù)不需要有self.my_tesla = ElectricCar('tesla', 'model s', 2016) print(my_tesla.get_descriptive_name())1.創(chuàng)建子類時(shí),父類必須在子類的前面先創(chuàng)建好。
2.定義子類時(shí),必須在括號(hào)內(nèi)指定父類的名稱。方法 __init__() 接受創(chuàng)建。
9.3.3 給子類定義屬性和方法——?jiǎng)?chuàng)建完子類后,在里面定義新的就好。但是不用寫在init里面,init里面是之前父類的。
class Car(): --snip-- class ElectricCar(Car): """Represent aspects of a car, specific to electric vehicles.""" def __init__(self, make, model, year): """ 電動(dòng)汽車的獨(dú)特之處 初始化父類的屬性,再初始化電動(dòng)汽車特有的屬性 """ super().__init__(make, model, year) ? self.battery_size = 70 ? def describe_battery(self):#這里的self應(yīng)該就是指新的electriccar的self吧 """ 打印一條描述電瓶容量的消息 """ print("This car has a " + str(self.battery_size) + "-kWh battery.") my_tesla = ElectricCar('tesla', 'model s', 2016) print(my_tesla.get_descriptive_name()) my_tesla.describe_battery(9.3.4重寫父類的方法:在子類中定義一個(gè)新的方法:方法名和父類要一樣。
9.3.5將實(shí)例用作屬性:
class Car(): --snip-- ? class Battery(): """ 一次模擬電動(dòng)汽車電瓶的簡(jiǎn)單嘗試 """ ? def __init__(self, battery_size=70): """ 初始化電瓶的屬性 """ self.battery_size = battery_size ? def describe_battery(self): """ 打印一條描述電瓶容量的消息 """ print("This car has a " + str(self.battery_size) + "-kWh battery.") class ElectricCar(Car): """ 電動(dòng)汽車的獨(dú)特之處 """ def __init__(self, make, model, year): """ 初始化父類的屬性,再初始化電動(dòng)汽車特有的屬性 """ super().__init__(make, model, year) ? self.battery = Battery()#NB!!這個(gè)特別關(guān)鍵,先創(chuàng)建一個(gè)electriccar屬性self.battery,再將另一個(gè)類battery()等于這個(gè)實(shí)例,從而electricacar類屬性中就有了battery類了 my_tesla = ElectricCar('tesla', 'model s', 2016 print(my_tesla.get_descriptive_name()) my_tesla.battery.describe_battery()#實(shí)參.類中類.類種類的方法9.4 導(dǎo)入類 多了一句 from X(文件名)import(文件中的類)。很簡(jiǎn)單,不贅述。
本章學(xué)習(xí):如何編寫類;如何使用屬性在類中存儲(chǔ)信息,以及如何編寫方法,以讓類具備所需的行為;如何編寫方法 __init__() ,以便根據(jù)類創(chuàng)建包含所需屬性的實(shí)例。如何修改實(shí)例的屬性 —— 包括直接修改以及通過方法進(jìn)行修改。使用繼承可簡(jiǎn)化相關(guān)類的創(chuàng)建工作;將一個(gè)類的實(shí)例用作另一個(gè)類的屬性可讓類更簡(jiǎn)潔。通過將類存儲(chǔ)在模塊中,并在需要使用這些類的文件中導(dǎo)入它們,可讓項(xiàng)目組織有序。
至此,你掌握了編寫組織有序而易于使用的程序所需的基本技能,該考慮讓程序目標(biāo)更明確、用途更大了。本文到此結(jié)束。
總結(jié)
以上是生活随笔為你收集整理的python 列表 换行_python基础语法学习——参考Python Crash Course的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python sanic加速_pytho
- 下一篇: python中args kwargs区别