函式(function)也叫方法(method),是一組可以重複使用的**段。函式分為內部函式和使用者自定義函式。內部函式就是程式語言已經寫好了,使用者無序定義就能直接呼叫的函式,比如說len()、str()、print()等,但是這些函式還遠不能滿足實際開發,故使用者可以自定義函式。函式的結構是
def 函式名(引數)
:#(注意縮排)
函式體return 返回值
其中函式的引數和返回值可以省略。函式可以被重複呼叫。函式需要被呼叫才能被執行。呼叫時只需要寫函式名和括號、引數(若有引數的話)就行
# 定義函式(這裡沒有引數和返回值)
defmy_function()
:print
("呼叫了此函式"
)# 呼叫函式,這裡呼叫三次
my_function(
)my_function(
)my_function(
)
引數可以分為
引數型別
說明位置引數
實參與形參一一對應,即實參的位置順序跟形參保持一致
關鍵字引數
位置順序可以不一致,指定形參名=實參
預設引數
如果函式的形參指定了預設值,則不傳實參時就採用形參的預設值
不定長引數(*args)
如果都不滿足以上的引數型別,則實參會被儲存到乙個元組裡,即*args
不定長引數(**kwargs)
如果不滿足以上的引數型別,則指定引數名的實參會被儲存到乙個字典裡即**kwargs
關於引數args, kwargs用法舉例(其他用法太簡單,不上**了)
def
info
(name,
*args,
**kwargs)
:print
("name:"
, name)
print
("args:"
, args)
print
("kwargs:"
, kwargs)
info(
"pan",18
,"男"
, height=
170, city=
"廣西"
)# 列印輸出:
# name: pan
# args: (18, '男')
# kwargs:
1 引數
引數就是在呼叫函式時給函式處理的變數,可以是0個,也可以是乙個或多個。若在定義函式時需要引數(形參),而在呼叫函式時卻沒有傳入引數(實參)則會報錯
# 定義函式,輸出傳入的引數
defsayhello
(a):
print
(a)# 呼叫函式,傳入的引數不一樣
sayhello(
"hello"
)sayhello(
"你好呀"
)sayhello(
)# 呼叫時沒有給引數,報錯
2 預設引數
為了避免因缺少引數值而報錯的情況,可以在定義函式時就給它乙個預設值
需要注意的是,形參只在函式內使用,屬於區域性變數
def
sayhello
(a="hi"):
print
(a)sayhello(
"hello"
)sayhello(
)# 不給引數,輸出預設的hi
若定義函式時使用了多個引數,在呼叫時該函式傳入的引數位置應與定義時一致。但若在定義時指定了形參預設值則實參可以不按順序
def
my_fun
(a=1
, b=2)
:print
(a)print
(b)my_fun(b=
4,a=3)
# 先輸出3,再輸出4
若執行完乙個函式得到乙個值(也可以是其他),可以將其返回。比如說定義乙個加法函式,計算完之後返回計算結果,並把結果賦值給乙個變數
def
add(a, b)
: c = a + b
return c # 這裡返回單個值,若要返回多個值,可以讓它返回乙個列表
d = add(1,
2)print
(d)e = add(3,
4)print
(e)
返回值可以是變數、確定的值、列表等,還可以是乙個函式,比如說返回函式本身,實現階乘
def
factorial
(a):
if a <=1:
s =1else
: s = a*factorial(a-1)
return s
print
( factorial(3)
)
注意
1)如果不指定返回值,即不寫return,則會預設返回乙個none
2)return後面的語句不會再執行
3)函式可以巢狀呼叫,即函式裡可以再呼叫其他函式
全域性變數就是在函式外定義的變數,作用域是全域性,區域性變數是函式內的變數(包括形參),全域性變數與區域性變數沒有關係,區域性變數在使用完的時候就會被銷毀。一般情況下,函式內是無法修改函式外的全域性變數的,若要修改,可以使用global關鍵字宣告該變數是全域性變數
# 定義全域性變數
num =
200def
test()
:# global num 告訴直譯器,函式內部使用的num就是外面的全域性變數num
global num
num =
250# 修改全域性變數
print
('inner num='
, num,
id(num)
)test(
)# 函式呼叫
print
('outer num='
, num,
id(num)
)def
func_outer()
: count =
0def
func_inner()
:nonlocal count
count +=
1return count
return func_inner
如果你的函式的功能很簡單,那就沒必要那麼麻煩定義乙個函式了,可以直接使用lambda定義乙個匿名函式
lambda
[形參1],
[形參2],
...:
[單行表示式] 或 [函式呼叫]
# 普通函式方式
defadd
(a, b)
:return a + b
print
(add(10,
20))# lambda方式
add =
lambda a, b: a + b
print
(add(10,
20))
注意
1)匿名函式只能實現簡單的邏輯,不能使用迴圈、分支等語法
2)匿名函式不需要return,會自動返回表示式的結果
函式 引數 返回值 遞迴
函式 函式表示式就是忽略名字 1 函式宣告 function onname 2 命名函式表示式 var test function abc 3 匿名函式表示式 var demo function 因為匿名函式表示式比較常用,所以說函式表示式一般是指匿名函式表示式 引數 形式引數 沒有實際傳值 實際引...
python函式的引數和返回值
1 函式的引數 引數 其實就是一種變數 是一種特殊的變數 專門給函式接受資料使用的 生活場景 函式 行為 引數 行為需要的資源 案例 函式 展示使用者資訊 使用者 生活 創業 需要什麼資料 錢 def show info name name變數 名義上函式執行需要乙個資料 name 形式引數 形參 ...
python的函式 引數和返回值
1 什麼是函式 函式就是對實現某一特定功能的 段的封裝。2 函式的分類 3 函式的定義 a 語法def 函式名 引數列表 函式體b 說明 def python中宣告函式的關鍵字 函式名 識別符號,不能是關鍵字 pep8命名規範,見名知意。固定格式 引數列表 引數1,引數2,引數3 這裡的引數叫形參。...