-
但是,有時候由于函數的實現關系,需要特定的參數,就比如前面實現的求絕對值的函數my_abs(),如果傳遞一個字符串,就會引起錯誤。
def my_abs(x):
? ?if x >= 0:
? ? ? ?return x
? ?else:
? ? ? ?return -x
my_abs('str param')
# 報錯
TypeError: '>=' not supported between instances of 'str' and 'int'為了保證函數的正常運行,有時候需要對函數入參進行類型的校驗,Python提供isinstance()函數,可以判斷參數類型,它接收兩個參數,第一個是需要判斷的參數,第二個是類型。
isinstance(100, int) # ==> True
isinstance(100.0, int) # ==> False
isinstance('3.1415926', str) # ==> True有了isinstance,就可以優化my_abs函數,不在里面運行出錯了。
def my_abs(x):
? ?if not isinstance(x, int) or not isinstance(x, float):
? ? ? ?print('param type error.')
? ? ? ?return None
? ?if x >= 0:
? ? ? ?return x
? ?else:
? ? ? ?return -x查看全部 -
我們繼續定義一個求列表list所有元素的和的函數:
def list_sum(L):
??? result = 0
??? for num in L:
??????? result = result + num
??? return result這樣子我們就定義了一個sum_list()的函數,注意,在最后return,我們把求和的結果result返回了,這樣就可以在外部調用函數后獲得result。
L = [1, 3, 5, 7, 9, 11]
result =list_sum(L) # 調用定義的sum_list函數并獲得return返回的結果
print(result)查看全部 -
除了使用Python內置的函數以外,在編程過程中,我們也經常需要自己定義函數。
在Python中,定義一個函數要使用 def 語句,依次寫出函數名、括號()、括號中的參數和冒號:,然后,在縮進塊中編寫函數體,函數的返回值用 return 語句返回。
我們以定義一個求絕對值的函數my_abs函數為例:def my_abs(x):
??? if x >= 0:
??????? return x
??? else:
??????? return -x請注意,return表示返回的意思,函數體內部的語句在執行時,一旦執行到return時,函數就執行完畢,并將結果返回。因此,函數內部通過條件判斷和循環可以實現非常復雜的邏輯。
查看全部 -
Python調用函數
Python內置了很多有用的函數,我們可以直接調用。比如前面求list的長度len()函數等等,都是Python內置的函數,我們經常會使用到它們。
在這個文檔里面,列舉了Python內置的大部分函數,同學們有興趣可以參考看看。https://docs.python.org/3/library/functions.html
要調用一個函數,需要知道函數的名稱和參數,比如求絕對值的函數 abs(),它接收一個參數。
對于abs()函數,abs就是函數的名稱,括號()內,就是函數的參數,當函數沒有參數時,默認就是一個空括號。abs接收一個參數,這個參數就是需要求絕對值的數,這個參數可以是整數,也可以是浮點數abs(-100) # ==> 100
abs(20) # ==> 20
abs(-3.14159) # ==> 3.14159需要注意的是,傳遞的參數數量一定要和函數要求的一致,不然將會引起錯誤,比如,如果在abs()函數中傳入兩個參數。
abs(1, 2)
# 報錯
Traceback (most recent call last):
? File "<stdin>", line 1, in <module>
TypeError: abs() takes exactly one argument (2 given)在錯誤提示中,清晰的說明了abs()函數只接收一個參數,但是卻傳遞了兩個參數,所以引起了錯誤。
其次,如果傳入的參數數量是對的,但是參數的類型不能被函數所接受,也會引起錯誤,比如:求絕對值的函數abs(),只有數字才擁有絕對值,如果傳遞一個字符串進去,將會引起錯誤。abs('3.1415926')
# 報錯
Traceback (most recent call last):
? File "<stdin>", line 1, in <module>
TypeError: bad operand type for abs(): 'str'這里錯誤提示說,str類型是錯誤的參數類型。
除了abs()函數,還有很多常見的函數,比如cmp()函數,可以比較兩個數的大小,這個時候,cmp()函數就接收兩個參數。
對于cmp(x, y),如果x < y 返回 -1,如果x == y 函數返回0,如果x > y函數返回1。cmp(1, 2) # ==> -1
cmp(2, 1) # ==> 1
cmp(3, 3) # ==> 0還有基礎數據類型的轉換函數,int()函數可以將合法的其它類型數據轉換為整數,str()函數可以將其它類型的數據轉換為字符串。
int('123') # ==> 123
int(12.34) # ==> 12
str(123) # ==> '123'
str(1.23) # ==> '1.23'在學習Python的過程中,我們將會接觸到越來越多的Python內置函數,這些內置函數提供了非常有用的功能,大大降低我們編程的難度。
查看全部 -
set提供方法判斷兩個set之間的關系,比如兩個集合set,判斷其中一個set是否為另外一個set的子集或者超集。
s1 = set([1, 2, 3, 4, 5])
s2 = set([1, 2, 3, 4, 5, 6, 7, 8, 9])
# 判斷s1是否為s2的子集
s1.issubset(s2) # ==> True
# 判斷s2是否為s1的超集
s2.issuperset(s1) # ==> True判斷集合是否重合
有時候需要判斷兩個集合是否有重合的地方,如果使用傳統的方法,需要使用for循環一個一個的去判斷,非常麻煩,set提供isdisjoint()方法,可以快速判斷兩個集合是否有重合,如果有重合,返回False,否則返回True。
s1 = set([1, 2, 3, 4, 5])
s2 = set([1, 2, 3, 4, 5, 6, 7, 8, 9])
s1.isdisjoint(s2) # ==> False,因為有重復元素1、2、3、4、5查看全部 -
除了使用remove()方法刪除元素以外,還可以使用discard()方法刪除元素,并且,和remove()不同的是,當元素不存在時,使用discard()并不會引發錯誤,所以使用discard()是更加高效的一個方法。
name_set = set(['Jenny', 'Ellena', 'Alice', 'Candy', 'David', 'Hally', 'Bob', 'Isen', 'Karl'])
name_set.discard('Jenny')
print(name_set) # ==> set(['Ellena', 'Alice', 'Candy', 'David', 'Hally', 'Bob', 'Isen', 'Karl'])
name_set.discard('Jenny')
print(name_set) # ==> set(['Ellena', 'Alice', 'Candy', 'David', 'Hally', 'Bob', 'Isen', 'Karl']清除所有元素的方法clear()
和dict一樣,set也提供了clear()方法,可以快速清除set中的所有元素。
name_set = set(['Jenny', 'Ellena', 'Alice', 'Candy', 'David', 'Hally', 'Bob', 'Isen', 'Karl'])
print(name_set) # ==> set(['Jenny', 'Ellena', 'Alice', 'Candy', 'David', 'Hally', 'Bob', 'Isen', 'Karl'])
name_set.clear()
print(name_set) # ==> set([])查看全部 -
四則運算
整數、浮點數可以直接進行四則運算。
整數和浮點數運算后 ,得到的結果不管小數點后是否有值,結果都變成浮點數了
取模運算? %? ?取余數
恰當使用取模運算,可以判斷一個數是否為偶數,當一個數對2取模結果為0時,則這個數為偶數,否則為奇數。
地板除? //? 取商
小數點位數? ?round(num , 2 )
查看全部 -
與運算:全真才真
或運算:有真則真
not計算的優先級是高于and和or的
查看全部 -
與運算 and
或運算 or:Python 把0,空字符串和None 看成False,其他數值和非空字符串都看成Ture
非運算 not?
短路計算 :? 計算 a and b,如果 a 是False,則返回a;
如果a 是Ture,則返回b
計算a or b,如果a 是Ture,則計算結果返回a;
? ? ? ? 如果a是False,則計算結果返回b
查看全部 -
四則運算(整數和浮點數運算結果浮點數)
取模運算(%,取余數)
地板除(//,取整數)
小數點位數(round()函數)
查看全部 -
變量?
變量名由大小寫英文字母,數字和下劃線_組成
變量不能用數字開頭
變量盡量不要和Python關鍵字重合
查看全部 -
Python數據類型:
整數,浮點數,字符串,空值(0和None),布爾值(Ture,False,可用and,or,not運算)
查看全部 -
輸入(“”)和(‘’),輸出是一樣的結果
查看全部 -
python應用范圍
查看全部 -
布爾值可以用and、or和not運算(注意and,or,not都是Python語言本身的關鍵字)。
and運算是與運算,只有所有都為 True,and運算結果才是 True。
or運算是或運算,只要其中有一個為 True,or 運算結果就是 True。
not運算是非運算,它是一個單目運算符,把 True 變成 False,False 變成 True。
查看全部
舉報