字典(Dictionary)
- 字典的定義
dictionary_name = {key_1: value_1,
key_2: value_2
}
-
字典的輸出:
代碼中字典中的前一項(xiàng)叫name俏拱,后一項(xiàng)叫meaning暑塑,其實(shí)叫什么都可以
一般循環(huán)輸出比較方便,下面是幾種輸出方式彰触,都可以梯投。
for name, meaning in python_words.items():
print("\n名稱: %s" % name)
print("解釋: %s" % meaning)
for word in python_words:
print("%s" % word)
for word in python_words.keys():
print(word)
for meaning in python_words.values():
print("值: %s" % meaning)
for word in sorted(python_words.keys()):
print("%s: %s" % (word, python_words[word]))
- 常用操作
操作 | 實(shí)現(xiàn) |
---|---|
加入新的鍵-值對 | 字典名[鍵名] = 值 |
修改字典中的值 | 字典名[鍵名] = 新值 |
刪除字典中的項(xiàng) | 字典名.pop('項(xiàng)名') |
修改鍵名 | 創(chuàng)建一個(gè)新鍵 ,將要更換鍵名的值賦給新鍵 |
-
嵌套:嵌套包括把列表或字典放在另一個(gè)列表或字典中况毅。
值為列表的字典:通過 字典名[詞條名][詞條內(nèi)位置] 訪問
值為字典的字典:通過 字典名[詞條名][詞條內(nèi)屬性名] 訪問
函數(shù)(Functions)
-
定義一個(gè)函數(shù)
使用關(guān)鍵字 def 告訴 Python 你將要定義一個(gè)函數(shù)分蓖。
確保函數(shù)的定義以冒號(hào)結(jié)束。 -
使用一個(gè)函數(shù)
返回值
參數(shù)缺省值尔许、位置參數(shù)么鹤、混合位置和關(guān)鍵字參數(shù)(部分參數(shù)賦初值,應(yīng)該把有默認(rèn)值的形參放在沒有默認(rèn)值的形參的后面)和c++差不多,就不再總結(jié)了
關(guān)鍵字參數(shù)不太一樣味廊,只要指出參數(shù)名字蒸甜,調(diào)用傳參時(shí)不再嚴(yán)格受到位置的限制
接受任意長度的序列:
它提供了一種語法,可以讓函數(shù)接受任意數(shù)量的參數(shù)余佛。如果我們在參數(shù)列表的最后一個(gè)參數(shù)前加一個(gè)星號(hào)柠新,這個(gè)參數(shù)就會(huì)收集調(diào)用語句的剩余參數(shù)并傳入一個(gè)元組。
如果函數(shù)中既有不定長參數(shù)又有普通參數(shù)辉巡,那么不定長參數(shù)必須放在普通參數(shù)的后邊恨憎。
def example_function(arg_1, arg_2, *arg_3):
# Let's look at the argument values.
print('\narg_1:', arg_1)
print('arg_2:', arg_2)
print('arg_3:', arg_3)
example_function(1, 2)
example_function(1, 2, 3)
example_function(1, 2, 3, 4)
example_function(1, 2, 3, 4, 5)
接受任意數(shù)量的關(guān)鍵字參數(shù)
在參數(shù)名前加兩個(gè)*, 會(huì)將這個(gè)參數(shù)變成一個(gè)字典來獲取關(guān)鍵字參數(shù)的值,其他關(guān)鍵字作為key,實(shí)參作為value
def example_function(**kwargs):
print(type(kwargs))
for key, value in kwargs.items():
print('{}:{}'.format(key, value))
example_function(first=1, second=2, third=3)
example_function(first=1, second=2, third=3, fourth=4)
example_function(name='Valerio', surname='Maggio')
- 如果我們在參數(shù)列表的最后一個(gè)參數(shù)前加一個(gè)星號(hào)憔恳,這個(gè)參數(shù)就會(huì)收集調(diào)用語句的剩余參數(shù)并傳入一個(gè)元組
- 如果一個(gè)參數(shù)前有兩個(gè)星號(hào)瓤荔,代表著收集調(diào)用語句中剩余的所有鍵值對參數(shù)。這個(gè)參數(shù)常被命名為 kwargs 钥组。這些參數(shù)鍵值對被存儲(chǔ)在一個(gè)字典中输硝。
兩個(gè)的參數(shù)要放在一個(gè)的后邊
類(Classes)
- 定義:類是一種組合信息和行為的方式
class Rocket():
def __init__(self):
#在類中要做的第一件事就是定義 __init__ 函數(shù)。當(dāng)對象被創(chuàng)建時(shí)程梦,__init__ 函數(shù)就會(huì)執(zhí)行点把,為需要的參數(shù)設(shè)置初始值。
# Each rocket has an (x, y) position
self.x = 0
self.y = 0
使用對象名和點(diǎn)符號(hào)來訪問對象的變量和方法
面向?qū)ο蠡A(chǔ)
常用術(shù)語 | 意義 |
---|---|
attribute:屬性 | 是一系列信息的集合作烟。在類中愉粤,一個(gè)屬性通常是一個(gè)變量砾医。 |
behavior:行為 | 是定義在類中拿撩,組成方法的部分。即定義在類中函數(shù)的一部分 |
method:方法 | 類中的函數(shù)如蚜,由 behavior 組成 |
object:對象 | 類的實(shí)例 |
_ init_() 方法:初始化函數(shù)
類名必須是駝峰式的压恒。也即每個(gè)單詞的開頭必須是大寫的,不允許下劃線的出現(xiàn)错邦。
目前為止圓括號(hào)里都是空的
"self" 指向當(dāng)前的對象,基本上探赫,類中所有的函數(shù)都需要 self 對象作為第一個(gè)參數(shù),因此它們就可以訪問類中的屬性撬呢÷追停可以在其中添加關(guān)鍵字參數(shù),更改對象的初始位置-
繼承
新類可以重寫覆蓋任一繼承自舊類的屬性或行為魂拦。也可以添加新的屬性和行為毛仪。舊類被稱為父類,新類被稱為父類的孩子芯勘。父類也被稱為 superclass 箱靴,子類被稱為 subclass。
- 當(dāng)一個(gè)子類要繼承父類時(shí)荷愕,在定義子類的圓括號(hào)中填寫父類的類名:
- 新類的 init() 函數(shù)接受的參數(shù)需要傳遞給父類的 init() 函數(shù)衡怀。由 super().init() 函數(shù)負(fù)責(zé):
模塊(Modules)和類
越長的程序越變得難以閱讀和維護(hù)。Python 允許將類放進(jìn)另一個(gè)文件中然后在你的程序中導(dǎo)入安疗。這樣就將類和程序隔離抛杨,也就能在不同的程序中運(yùn)用。隨著使用次數(shù)的增多荐类,類也會(huì)變得越來越可靠和完善怖现。
-
在模塊中存儲(chǔ)一個(gè)類
模塊的名字是小寫的單詞,類名是以大寫字母開頭的掉冶。
創(chuàng)建一個(gè)單獨(dú)的 .py 文件真竖。確保使用約定的命名方式脐雪,小寫字母加下劃線的方式為文件命名
from rocket import Rocket #導(dǎo)入一個(gè)類#
from module_name import ClassName #導(dǎo)入多個(gè)類#
-
導(dǎo)入模塊和類的一些方法
1.都導(dǎo)入最常見
from module_name import ClassName
2.只導(dǎo)入模塊
import module_name
3.在你的項(xiàng)目中導(dǎo)入模塊時(shí),你可以為模塊自定義名字恢共。
import module_name as local_module_name
4.導(dǎo)入模塊中的所有類和函數(shù):盡量避免使用因?yàn)閷?dǎo)入的太多了
from module_name import *
-
函數(shù)模塊
導(dǎo)入方法與上相同
異常(Exceptions)
語句 | 作用 |
---|---|
try/except | 捕捉并恢復(fù) Python 自動(dòng)觸發(fā)的或自己代碼中的異常 |
try/finally | 無論異常是否發(fā)生,執(zhí)行清理操作 |
raise | 手動(dòng)觸發(fā)一個(gè)異常 |
with/as | 在 Python 2.6 讨韭,3.0 或更新的版本中實(shí)現(xiàn)上下文管理器脂信。 |
1.try/except
try:
<語句> #運(yùn)行別的代碼
except <名字>:
<語句> #如果在try部份引發(fā)了'name'異常
except <名字>,<數(shù)據(jù)>:
<語句> #如果引發(fā)了'name'異常透硝,獲得附加的數(shù)據(jù)
else:
<語句> #如果沒有異常發(fā)生
2.try/finally
try:
<語句>
finally:
<語句> #退出try時(shí)總會(huì)執(zhí)行
raise
3.raise
raise [Exception [, args [, traceback]]]
語句中 Exception 是異常的類型(例如狰闪,NameError)參數(shù)標(biāo)準(zhǔn)異常中任一種,args 是自已提供的異常參數(shù)濒生。
最后一個(gè)參數(shù)是可選的(在實(shí)踐中很少使用)埋泵,如果存在,是跟蹤異常對象罪治。
4.with/as
with open(r'C:\misc\data') as myfile:
for line in myfile:
print(line)
# ...more code here...
- 用戶自定義異常