1.函數(shù)的簡單應(yīng)用
公共:
? ? str, int,float,bool,bytes,list,set,tuple, dict,max,min,len,print,input
特定類型的函數(shù):
? Math :? pow(), sqrt().
str:? find(), split(), replace()..
random:? random()
os:? listdir(),remove()
os.path:? isfile() , isdir()
函數(shù)本質(zhì)就是將重復(fù)的代碼封裝在一塊呼奢,當(dāng)使用時可被重復(fù)地調(diào)用。
定義函數(shù)的語法:
? ? def函數(shù)名 (參數(shù)列表):
功能語句
? ? ? ? [return表達式]? #如果函數(shù)有返回值切平,則使用 return
如:
? ? ? def? sub(x, y):? ? ? #定義時握础,函數(shù)的參數(shù)名稱之為 形參
? ? ? ? ? ? ? return x + y? ? #返回兩個數(shù)的和
? ? ? s = sub(10, 20)? # s : 30 ,調(diào)用時,函數(shù)的參數(shù)稱之為 實參
注意: 編寫規(guī)范悴品,函數(shù)的前后應(yīng)該空兩行
函數(shù)中是否存在參數(shù)禀综,都必須存在 小括號 ( )
函數(shù)中存在while循環(huán)時,如果在循環(huán)語句有 return語句他匪,則會中斷循環(huán)
函數(shù)名的命名菇存, 跟變量名的命名規(guī)則是一樣的
2.函數(shù)的關(guān)鍵字參數(shù)
調(diào)用函數(shù)時,可以使用函數(shù)的形參名來傳值邦蜜。
如果使用形參名指定參數(shù)值依鸥,則所有參數(shù)必須統(tǒng)一, 除了帶默認(rèn)值的參數(shù)
3.函數(shù)參數(shù)的默認(rèn)值
? ? ? 是在形參名后 設(shè)置默認(rèn)值:def xx(ns=10)
有默認(rèn)值的參數(shù)悼沈,在調(diào)用時可以不用提供實參
4.不定長度的參數(shù)
? ? ? *args? :? tuple元組類型
? ? ? **kwargs:? dict字典
? ? ? 在函數(shù)的參數(shù)列表中贱迟,*args和**kwargs一般要放在普通的參數(shù)的后面,
? ? ? 如果在前面的話絮供,普通參數(shù)必須使用關(guān)鍵參數(shù)傳值(參數(shù)名 =參數(shù)值)衣吠。
5.匿名函數(shù)
? 函數(shù)名? = lambda參數(shù)列表:表達式,函數(shù)的返回值即是表達式值
? 函數(shù)名(實參列表)
6.偏函數(shù)
- functools.partial(現(xiàn)有的函數(shù)名, 關(guān)鍵參數(shù)賦值表達式)壤靶,返回函數(shù)名
表象: 偏函數(shù)即是現(xiàn)有函數(shù)的分身缚俏,區(qū)別是關(guān)鍵參數(shù)值不同。
7.作用域
只針對模塊、類忧换,函數(shù)中的變量恬惯,這些變量一般只作用在如函數(shù)的局部。
如果想將局變提升為全局:
? ? ? ? global局部變量名
8. Python的異常處理
之前的代碼經(jīng)常會出現(xiàn)的異常:
? ? ? TypeError, KeyError亚茬,IndexError酪耳、 ValueError
Exception
9.函數(shù)
1)定義函數(shù)
def? 函數(shù)名(參數(shù)列表):
語句
return 結(jié)果
如函數(shù)沒有一個return ,則返回是None
def add(x, y):
s = x + y
return s
? ? ? ?? 調(diào)用函數(shù):add(10, 20)? 返回30
? ? ? ?? 關(guān)鍵參數(shù)傳值:
add(y=10, x=20)
? ? ? ?? 參數(shù)默認(rèn)值
def? multiple(x, base=4):
if x % base == 0:
return True
print(‘hahahaha’)
return False
? ? ? 調(diào)用時:multiple(13)? 返回False
? ? ? ? ? ? ? ? ? ? ? multiple(15, 5) 返回True
def sum_(*args):
s = 0
for n in args:
s += n
return s
調(diào)用:sum_(10, 20, 30 , 40, 50)
sum_(1, 5, 8)
? ?? **kwargs :? 一般情況下,做函數(shù)的可選項
def openTxt(path, **kwargs):
mode = kwargs.get(‘mode’)
if not mode:
? ? ? ? ? ? ?? mode = ‘rt’? ? # 默認(rèn)值
charset = kwargs.get(‘charset’)
if not charset:
charset= ‘utf-8’
with open(path, mode, encoding=charset) as f:
c =? f.read()
print(c)
調(diào)用:openTxt(r’c:\aa.txt’)
openTxt(r’c:\aa.txt’, charset=‘gbk’)
openTxt(r’c:\aa.txt’,charset=‘gbk’,mode=‘w+’)
異常處理:
try:
? ? ? ?? 可能出現(xiàn)的異常
except 異常類as 類對象:
? ? ? ?? 處理異常的語句
finally:
? ? ? ? ? 最終處理的語句
打開文件時可能會出現(xiàn)異常刹缝,IOError
try:
? ? ? ?? f = open(r’c:\aa.txt’)? # 如果aa.txt文件不存在
except:
? ? ? ?? print(‘文件不存在’)
finally:
? ? ? ?? print(‘文件操作結(jié)束’)
? ? def? chgInt(x):? # 將字符的x參數(shù)值轉(zhuǎn)成int類型
try:
return int(x)
except:
? ? ? ? ? ? print(‘{0}? 不能轉(zhuǎn)成int’.format(x))
return 0
‘’.replace()
s.find()
‘saa’.split()
max()
open()
調(diào)用:chgInt(‘a(chǎn)’) == None? # 打印‘a(chǎn)’ 不能轉(zhuǎn)成int
? ? ? ?? chgInt(’10’) == 10? # 返回10
Sort 排序