數據類型轉換:
Python內置的常用函數還包括數據類型轉換函數,比如int()
函數可以把其他數據類型轉換為整數:
>>> int('123') 123 >>> int(12.34) 12 >>> float('12.34') 12.34 >>> str(1.23) '1.23' >>> str(100) '100' >>> bool(1) True >>> bool('') False
pass
語句什么都不做,那有什么用?實際上pass
可以用來作為占位符,比如現在還沒想好怎么寫函數的代碼,就可以先放一個pass
,讓代碼能運行起來。
缺少了pass
,代碼運行就會有語法錯誤。
關鍵字參數有什么用?它可以擴展函數的功能。比如,在person
函數里,我們保證能接收到name
和age
這兩個參數,但是,如果調用者願意提供更多的參數,我們也能收到。試想你正在做一個用戶注冊的功能,除了用戶名和年齡是必填項外,其他都是可選項,利用關鍵字參數來定義這個函數就能滿足注冊的需求。
和可變參數類似,也可以先組裝出一個dict,然后,把該dict轉換為關鍵字參數傳進去:
extra = {} def person(name, age, **extra): print('name:', name, 'age:', age, 'other:', extra) person('jack',24, city = 'Beijing', job = 'stu', zipCode = 123) 打印:name: jack age: 24 other: {'city': 'Beijing', 'job': 'stu', 'zipCode': 123}
如果要限制關鍵字參數的名字,就可以用命名關鍵字參數
def checkName(name, age, *,city ='Nanjing',job): print('命名關鍵字參數:name:%s age:%s %s %s' % (name, age, city, job)) checkName('shb',28,job='stu') 打印:命名關鍵字參數:name:shb age:28 Nanjing stu
清除數據操作
a = [1, 2, 3, 4] >>> print (a) [1, 2, 3, 4] >>> b = a.clear() >>> print (b) None
復制數據操作
>>> a = [1, 2, 3, 4] >>> b = a.copy() >>> print (b) [1, 2, 3, 4]
獲取元素下標操作
>>> a = [1, 2, 3, 4] >>> b = a.copy() >>> print (b) [1, 2, 3, 4] >>> c = b.index(3) >>> print (c) 2
插入元素操作
b.insert(2,'shb') >>> print (b) [1, 2, 'shb', 3, 4]
刪除列表最后一個元素,並返回該元素操作
>>> b.pop() 4 >>> print (b) [1, 2, 'shb', 3]
刪除制定元素操作
[1, 2, 'shb', 3] >>> b.remove('shb') >>> print (b) [1, 2, 3]
find函數,在字符串中查找子串,返回值代表找到該數據的下標
title = 'shb is a superman' >>> title.find('a') 7
find 函數指定起點和重點索引 查找
#title = 'shb is a superman' >>> title.find('s',1,10) 5
.......后面還有很多有用的函數,不一一介紹。
小結
Python的函數具有非常靈活的參數形態,既可以實現簡單的調用,又可以傳入非常復雜的參數。
默認參數一定要用不可變對象,如果是可變對象,程序運行時會有邏輯錯誤!
要注意定義可變參數和關鍵字參數的語法:
*args
是可變參數,args接收的是一個tuple;
**kw
是關鍵字參數,kw接收的是一個dict。
以及調用函數時如何傳入可變參數和關鍵字參數的語法:
可變參數既可以直接傳入:func(1, 2, 3)
,又可以先組裝list或tuple,再通過*args
傳入:func(*(1, 2, 3))
;
關鍵字參數既可以直接傳入:func(a=1, b=2)
,又可以先組裝dict,再通過**kw
傳入:func(**{'a': 1, 'b': 2})
。
使用*args
和**kw
是Python的習慣寫法,當然也可以用其他參數名,但最好使用習慣用法。
命名的關鍵字參數是為了限制調用者可以傳入的參數名,同時可以提供默認值。
定義命名的關鍵字參數在沒有可變參數的情況下不要忘了寫分隔符*
,否則定義的將是位置參數。