在Python函數(shù)中,還可以定義可變參數(shù)。顧名思義,可變參數(shù)就是傳入的參數(shù)個數(shù)是可變的,可以是1個、2個到任意個,還可以是0個。
我們以數(shù)學(xué)題為例子,給定一組數(shù)字a,b,c……,請計算a2+b2+c2+……。
1defcalc(*numbers):
2sum=0
3forninnumbers:
4sum=sum+n*n
5returnsum
6
7#測試
8#調(diào)用該函數(shù)時,可以傳入任意個參數(shù),包括0個參數(shù)
9>>>calc(1,2)
105
11>>>calc()
120
13
14#Python允許你在list或tuple前面加一個*號,把list或tuple的元素變成可變參數(shù)傳進(jìn)去;*nums表示把nums這個list的所有元素作為可變參數(shù)傳進(jìn)去。這種寫法相當(dāng)有用,而且很常見
15>>>nums=[1,2,3]
16>>>calc(*nums)
1714
成員運算符:notin、in(判斷某個單詞里是不是有某個字母)
成員運算符用來判斷一個元素是否是另一個元素的成員。比如說我們可以判斷“hello”中是否有“h”,得到的結(jié)果也是True或者False。
1>>>"h"in"hello"#這里的意思是“h”在“Hello”中,判斷后結(jié)果為True
2True
3>>>"h"notin"hello"#這里的意思是“h”不在“Hello”中,判斷后結(jié)果為False
4False
身份運算符:is、isnot(講數(shù)據(jù)類型時講解,一般用來判斷變量的數(shù)據(jù)類型)
用來判斷身份。
1>>>a=123456
2>>>b=a
3>>>bisa#判斷a和b是不是同一個123456
4True
5>>>c=123456
6>>>cisa#判斷c和a是不是同一個123456
7False
8>>>cisnota#判斷c和a是不是不是同一個123456
9True
這里我們首先將123456賦值給a,后有將a賦值給b,這樣其實是a和b的值都是123456,但是后面c的值也是123456,為什么第一次aisb的結(jié)果為True,c和a的結(jié)果為False呢?
原因是這樣的:我們知道程序是運行在內(nèi)存里的,第一次我們將123456賦值給a的時候,其實是在內(nèi)存里開辟了一塊空間,將123456放在這塊空間里,為了找到這里的123456,會有一個指向這塊空間的地址,這個地址叫做內(nèi)存地址,是123456存儲在內(nèi)存中的地址。a其實指向的就是存儲123456的內(nèi)存空間的地址。執(zhí)行了b=a,就是讓b指向的地址和a一樣。之后我們執(zhí)行了c=123456,這里就會再開辟一塊內(nèi)存空間,并將指向該空間的內(nèi)存地址賦值給c,這樣的話,a和b指向的是同一個123456,c指向的是另外一個123456。
以上內(nèi)容為大家介紹了python可變參數(shù),希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機構(gòu):千鋒教育。