函數的初識
函數:將代碼封裝起來。
#函數定義 def my_len(): s1=‘hello world‘ length=0 for i in s1: length=length+1 print(length) my_len() #函數調用 # 11
函數總結一:
定義:def關鍵詞開頭,空格之後接函數名稱和圓括號(),最後還有一個“:”。
def是固定的,不能變,必須是連續的def三個字母,不能分開。
空格 為了將def關鍵字和函數名稱分開,必須空。
函數名:函數名只能包含字符串、下劃線和數字且不能以數字開頭。雖然函數名可以隨便起,但我們給函數起名字還是要盡量簡短,並表達函數功能。
括號:必須要有
註釋:每一個函數都應該對功能和參數進行相應的說明,應該寫在函數下面第一行。以增強代碼的可讀性。
調用:就是函數名()一定要加上括號。
函數的返回值
在調用python自帶的len函數時,必須用一個變量來接收這個值。
str_len=len(‘hello,word‘)
使用自己寫的函數也可以做到這一點
# 函數定義 def my_len(): s1=‘hello world‘ length=0 for i in s1: length=length+1 print(length) str_len=my_len() #函數調用print(‘str_len:%s‘%str_len) # 11 # str_len:None 說明這段代碼什麽都沒有返回。
在寫函數的時候,要盡量以功能為向導,結果最好不要直接在函數中打印出來。
關鍵字return的作用
1、返回一個值
2、終止一個函數的繼續
def my_len(): # 函數名的定義 s1=‘hello world‘ length=0 for i in s1: length=length+1 return length # 函數的返回值 str_len=my_len() #函數的調用以及返回值的接收 print(str_len) # 11
在沒有返回值的時候:
1、不寫return與寫入return None的效果相同,返回的只都是None
2、只寫一個return後面不加任何東西的時候與寫return None的效果一樣
返回多個值:
1、當用一個變量接收返回值的時候,收到的是一個元組。這是因為在python中把用逗號分割的 多個值認為是一個元組。
2、當返回值有多個變量接收,那麽返回值的個數應該和接收變量的個數完全一致。
#返回多個值,用一個變量接收 def f(): return ‘a‘,‘b‘ c=f() print(c) # (‘a‘, ‘b‘) #返回多個值,用多個變量接收(接收的變量數與返回值的個數要一致) c,d=f() print(c,d) # a b
return的擴展題:
def f(l): if len(l)>4: return True else: return False s=[1,2,3,4] dic={5,6,7,8,9} print(f(s)) print(f(dic)) # False # True
函數的參數:
#函數定義 def fun(s): count=0 for i in s: count+=1 return count #函數調用 str=fun(‘jshdjkshkdhsk‘) print(str) #13
在上述代碼中,告訴了fun函數要計算的字符串是誰,這個過程就是傳遞參數,簡稱傳參;在調用函數時傳遞的這個‘jshdjkshkdhsk‘和定義函數時的s就是參數。
實參與形參:
在調用函數時傳遞的‘jshdjkshkdhsk‘被稱為實際參數,因為這個是實際要交給函數的內容,簡稱實參
定義s的時候,s只是一個變量的名字,被稱為形式參數,因為在定義函數的時候它只是一個形式,表示這裏有一個參數,簡稱形參。
在傳遞多個參數:多個函數分別可以使用任意數據類型
按照關鍵之傳參數和按照位置傳參數是可以混用的,但是首先都是按位置傳,之後再是按關鍵字傳的;按照位置傳完該接收的參數只能接收一個值,不接受或者重復接收
def f2(arge1,arge2): # 站在接收、形參的角度上:位置參數 print(arge1) print(arge2) f2(‘abc‘,arge2=[1,2,3]) # abc # [1, 2, 3]
def f2(arge1,arge2): print(arge1) print(arge2) f2(‘abc‘,{‘jsdj‘}) # abc # {‘jsdj‘}
默認參數:
是可以不傳的參數,在不傳參數的情況下可以使用默認值;如果傳了,就會使用傳的值
def classmate(name,sex=‘男‘): print(‘姓名:%s,性別:%s‘%(name,sex)) classmate(‘張三‘) classmate(‘李四‘) classmate(‘翠花‘,‘女‘) # 姓名:張三,性別:男 # 姓名:李四,性別:男 # 姓名:翠花,性別:女
魔性用法:默認參數盡量避免使用可變數據類型
def fun(l=[]): # 相當於在def之前先定義了一個str=[],再將str賦值給l l.append(2) print(l) fun() fun() fun() fun() # [2] # [2, 2] # [2, 2, 2] # [2, 2, 2, 2]
def fun(l=[]): # 相當於在def之前先定義了一個str=[],再將str賦值給l l.append(2) print(l) fun([]) fun([]) fun([]) fun([]) #[2] # [2] # [2] # [2]
函數的初識