1、函數的初識
一、如何定義函數:
def 函數名():
代碼...app
例如:
def my_len():
l = [1, 2, 3, 4]
count = 0
for i in l:
count += 1
print(count)函數
二、函數的優勢:
1,減小代碼的重複率。
2,加強代碼的閱讀性。post
三、函數究竟是什麼?
函數最主要的目的:封裝一個功能。spa
四、函數如何調用:函數名 ()
my_len()blog
五、總結
定義:def 關鍵詞開頭,空格以後接函數名稱和圓括號(),最後還有一個":"。
def 是固定的,不能變,他就是定義函數的關鍵字。
空格 爲了將def關鍵字和函數名分開,必須空,固然你能夠空2格、3格或者你想空多少都行,但正常人仍是空1格。
函數名:函數名只能包含字符串、下劃線和數字且不能以數字開頭。雖然函數名能夠隨便起,但咱們給函數起名字仍是要儘可能簡短,並能表達函數功能。
括號:是必須加的!字符串
註釋:每個函數都應該對功能和參數進行相應的說明,應該寫在函數下面第一行。以加強代碼的可讀性。class
調用:就是 函數名() 要記得加上括號。變量
2、函數的返回值:return
一、函數中若是遇到retrun,則直接結束函數。數據類型
二、給函數的執行者返回值。
1,不寫return和只寫return 返回None
2,return 單個值 原封不動的返回(返回的數據類型也一致)
3,return 多個值 返回一個元組,全部的返回值做爲元組的每個元素總結
(1)不寫return
def func1():
print(111)
print(222)
print(func1()) #111 222 None
(1-2)只寫return
def func1():
print(111)
print(222)
return
print(func1()) #111 222 None
(2)return 單個值
def fun1():
a = 1
b = 'hello'
c = [1,2,3]
return a
print(fun1()) # 1
(3)return 多個值
def fun1():
a = 1
b = 'hello'
c = [1,2,3]
return a,b,c
print(fun1()) #(1, 'hello', [1, 2, 3])
注意:工做中,函數中儘可能不要出現print,這裏只是爲了展現函數的用法才使用的
3、函數的參數
一、用一個例子簡單瞭解一下:
#函數定義
def mylen(s):
"""計算s的長度"""
length = 0
for i in s:
length += 1
return length
#函數調用
str_len = mylen("hello world")
print('str_len : %s' %(str_len))
這裏咱們要告訴mylen函數要計算的字符串是誰,這個過程就叫作傳遞參數,
簡稱傳參,咱們調用函數時傳遞的這個「hello world」和定義函數時的s就是參數。
這個「hello world」被稱爲實際參數,由於這個是實際的要交給函數的內容,簡稱實參。
定義函數時的s,只是一個變量的名字,被稱爲形式參數,由於在定義函數的時候它只是一個形式並非真正的數據,
表示這裏有一個參數,簡稱形參。
二、實參
1,位置參數:按照順序,一一對應
def func1(x,y):
print(x,y)
func1(1,2) #位置參數,1對應傳給x,2對應傳給y
2,關鍵字傳參:能夠不按照順序,可是必須一一對應
def func1(x,y):
return x+y
print(func1(y=100,x=99)) #關鍵字參數,咱們寫實參的時候直接聲明瞭形參y對應100,x對應99
3,混合傳參:關鍵字參數必定要在位置參數後面
def func1(a,b,x,y):
return b+y
print(func1(100,200,y=100,x=99)) #300
三、形參
1,位置參數 按照順序,一一對應
def func(x,y,z):
print(x,y,z)
func(1,2,3)
2,默認參數:給其傳值,將原默認參數覆蓋掉,不傳值,不報錯,使用默認值。
應用場景:不常常改變的參數,可是一直在用。
def func1(x,y,a=666):
print(x,y,a)
func1(1,2) #1 2 666
func1(1,2,333) #1 2 333
注意:
默認參數通常設置爲不可變的數據類型(str,int,tuple等),
若默認參數設置爲可變的數據類型(list,dict等),那麼執行一次後,這個可變的數據類型它始終用的是同一個。
def fun1(x,l1=[]):
l1.append(x)
return l1
res = fun1(20)
print(res,id(res)) #[20] 2192007779592
res1 = fun1(100)
print(res1,id(res1)) #[20, 100] 2192007779592
四、參數總結
實參:
位置參數:按照順序,一一對應
關鍵字參數:能夠不按照順序,可是必須一一對應
混合參數:關鍵字參數必定要在位置參數後面
形參
位置參數:按照順序,一一對應
默認參數:給其傳值,將原默認參數覆蓋掉,不傳值,不報錯,使用默認值
小知識點:只針對於簡單的if else 這樣的結構,才能夠使用。
def fun(x,y):
if x > y:
return x
else:
return y
print(fun(1,2))
上面代碼能夠下成下面的代碼:
def fun(x,y):
return x if x > y else y
print(fun(1,2))