All endings are beginnings, we just don't know it at the time.
函數(shù)的參數(shù)傳遞
可以使用位置參數(shù)或關(guān)鍵字參數(shù)傳遞給函數(shù),但是位置參數(shù)不能出現(xiàn)在任何關(guān)鍵字參數(shù)的后面钳幅,例如
def f(p1, p2, p3)
調(diào)用的時(shí)候可以使用位置參數(shù):f(1物蝙,2,3)
也可以使用關(guān)鍵字參數(shù):f(p1=1, p2=2,p3=3),此時(shí)參數(shù)位置可以變化敢艰。
但是使用f(1诬乞,p2=2糙箍,3)是錯(cuò)誤的痰憎,因?yàn)槲恢脜?shù)3出現(xiàn)在關(guān)鍵字參數(shù)p2的后面。
通過引用傳遞參數(shù)
當(dāng)傳遞數(shù)字和字符串等不可變參數(shù)給函數(shù)時(shí)拍谐,函數(shù)內(nèi)部形參改變了辈双,但是實(shí)參卻不變责掏,真正原因是數(shù)字和字符串是不可變對(duì)象,不可變對(duì)象的內(nèi)容是不能被改變的湃望,當(dāng)改變的時(shí)候Python會(huì)為這個(gè)新的值創(chuàng)建一個(gè)新的對(duì)象换衬。但是如果傳遞一個(gè)可變的參數(shù)(例如對(duì)象)給函數(shù),如果函數(shù)中將對(duì)象的某個(gè)參數(shù)改變了证芭,那么實(shí)參的這個(gè)屬性值也就跟著變了瞳浦。如:
>>> a=3
>>> id(a)
4300223496
>>> a+=1
>>> id(a)
4300223472
??在同一個(gè)模塊中定義兩個(gè)同名函數(shù),不會(huì)出現(xiàn)語法錯(cuò)誤废士,但后者的優(yōu)先級(jí)更高
可以使用global語句將變量設(shè)置成全局變量叫潦。
函數(shù)可以混合使用默認(rèn)值參數(shù)和非默認(rèn)值參數(shù),這種情況下官硝,默認(rèn)值參數(shù)必須在非默認(rèn)值參數(shù)的后面定義矗蕊。如:
def printArea(width , height = 1.0)
Python函數(shù)可以同時(shí)返回多個(gè)值。當(dāng)調(diào)用的時(shí)候氢架,需要同時(shí)賦值傳遞這些返回值,如下:
def sort(num1, num2):
? ? return num1, num2
n1, n2 = sort(3, 2)
隨機(jī)生成0到127之間的ASCII碼:chr(randind(0, 127))
隨機(jī)生成小寫字母a到z之間的字母:chr(randint(ord('a'), ord('z')))
開發(fā)時(shí)傻咖,多使用自頂向下的設(shè)計(jì)和自底向上的實(shí)現(xiàn),可以先將整體的框架搭建好岖研,然后經(jīng)過調(diào)試再逐步實(shí)現(xiàn)的方式積累解決問題的經(jīng)驗(yàn)卿操。