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