# 學習人員:賈其豪
#函式定義預設值引數
#函式定義時,給形參設定預設值,只有與預設值不符的時候才需要傳遞實參
deffun
(a,b=10)
:#b稱為預設值引數
print
(a,b)
#函式的呼叫
fun(
100)
fun(20,
30)'''個數可變的位置引數
定義函式時,可能無法事先確定傳遞的位置實參的個數時,使用可變的未知引數
使用*定義個數可變的位置形參
結果為乙個元組
個數可變的關鍵字形參
定義函式時,無法事先確定傳遞的關鍵字實參的個數時,使用可變的關鍵字形參
使用**定義個數可變的關鍵字形參
結果為乙個字典
'''#個數可變的位置引數,只能定義乙個
deffun
(*args)
:print
(args)
fun(10)
fun(12,
23,34,
45,)#個數可變的關鍵字形參,只能定義乙個
deffun1
(**args)
:print
(args)
fun1(a=12)
fun1(b=
23,c=
34,d=45)
'''在乙個函式的定義過程中,既有個數可變的關鍵字形參,又有個數可變的位置形參,
要求,個數可變的位置形參放在個數可變的關鍵字形參前面'''
deffun2
(*args1,
**args2)
:pass
'''def fun3(**args1,*args2): #報錯
pass'''
# 學習人員:賈其豪
'''位置實參:根據形參對應的位置進行實參傳遞
關鍵字實參:根據形參名稱進行實參傳遞'''
defcalc
(a,b)
:#a,b稱為形式引數,簡稱形參,形參的位置是在函式的定義處
c=a+b
return c
#位置實參
result=calc(10,
20)#10,20稱為實際引數,簡稱實參,實參的位置是在函式的呼叫處
print
(result)
#關鍵字實參
result=calc(b=
10,a=20)
#=左側的變數名稱叫做關鍵字
print
(result)
# 學習人員:賈其豪
deffun
(a,b,c)
:print
('a='
,a)print
('b='
,b)print
('c='
,c)#函式的呼叫
fun(10,
20,30)
lst=[11
,22,33
]#fun(lst) #報錯
fun(
*lst)
#在函式呼叫時,將列表中的每個元素都轉化為位置實參傳入
fun(a=
100,b=
200,c=
300)
dic=
#fun(dic) #報錯
fun(
**dic)
#在函式呼叫時,將字典中的鍵值對轉換為關鍵字實參傳入
deffun1
(a,b,
*,c,d)
:#在*之後只能用關鍵字傳參
print
('a='
, a)
print
('b='
, b)
print
('c='
, c)
print
('d='
, d)
fun1(12,
23,d=
22,c=21)
#函式定義是的形參的順序問題
deffun2
(a,b,
*,c,d,
**args)
:pass
deffun3
(*args,
**args2)
:pass
deffun4
(a,b=10,
*args1,
**args2)
:pass
# 學習人員:賈其豪
'''函式就是執行特定功能的一段**
優點:復用**
隱藏實現細節
提高可維護性
提高可讀性便於除錯'''
'''函式的建立:def 函式名([輸入引數])
函式體[return ***]'''
defcalc
(a,b)
: c=a+b
return c
result=calc(10,
20)print
(result)
# 學習人員:賈其豪
deffun
(arg1,arg2)
:print
('arg1'
,arg1)
print
('arg2'
,arg2)
arg1=
10010
)print
('arg1'
, arg1)
print
('arg2'
, arg2)
n1=11
n2=[22,
33,44]
print
('n1'
,n1)
print
('n2'
,n2)
fun(n1,n2)
print
('n1'
,n1)
print
('n2'
,n2)
#在函式呼叫過程中,進行引數的傳遞
#如果是不可變物件,在函式體的修改不會影響實參的值
#如果是可變物件,在函式體的修改會影響到實參的值
# 學習人員:賈其豪
'''變數的作用域
程式**能訪問該變數的區域
根據變數的有效範圍可分為:
區域性變數:在函式內定義並使用的變數,只在函式內部有效,區域性變數使用global宣告,這個變數就會變成全域性變數
全域性變數:函式體外定義的變數,可作用於函式內外
'''def
fun(a,b)
: c=a+b #a,b,c都相當於是區域性變數
print
(c)#print(c) #a,c超出了起作用的範圍(作用域)
#print(a)
name=
'楊老師'
#name的作用範圍在函式內外都可以起作用,是全域性變數
print
(name)
deffun2()
:print
(name)
fun2(
)def
fun3()
:global age #age的作用範圍是全域性
age=
20print
(age)
fun3(
)print
(age)
# 學習人員:賈其豪
deffun
(num)
: odd=
even=
for i in num:
if i%2:
else
:return odd,even
#函式的呼叫
lst=[10
,29,34
,23,44
,53,55
]print
(fun(lst)
)#輸出多個值會以元組型別輸出
'''函式的返回值
1.如果函式沒有返回值(函式執行完畢後,不需要給呼叫處提供資料),return可以省略不寫
2.函式的返回值,如果是1個,直接返回型別
3.函式的返回值,如果是多個,返回的結果是元組
'''
# 學習人員:賈其豪
'''什麼是遞迴函式:如果在乙個函式的函式體內呼叫了該函式本身,這個函式就稱為遞迴函式
遞迴的組成部分:遞迴呼叫與遞迴終止條件
遞迴的呼叫過程:每遞迴呼叫一次函式,都會在棧記憶體分配乙個棧幀
每執行完一次函式,都會釋放相應的空間
遞迴的優缺點:缺點:占用記憶體多,效率低下
優點:思路和**簡單
'''#使用遞迴計算階乘
deffac
(n):
if n==1:
return
1else
: res=n*fac(n-1)
return res
print
(fac(6)
)#斐波那契數列
deffib
(n):
if n==
1or n==2:
return
1else
: res=fib(n-1)
+fib(n-2)
return res
print
(fib(6)
)#輸出前六位上的數字
for i in
range(1
,7):
print
(fib(i)
)
函式與lambda表示式
lambda表示式是python中一類特殊的定義函式的形式,使用它可以定義乙個匿名函式。與其它語言不同,python的lambda表示式的函式體只能有單獨的一條語句,也就是返回值表示式語句。其語法如下 lambda 形參列表 函式返回值表示式語句 常規函式 def comp x return x a...
函式與Lambda表示式
def myfirstfunction name 函式定義過程中name是形參 因為ta只是乙個形式,表示佔據乙個引數位置 print 傳遞進來的叫做實參,因為ta是具體的引數值!format name myfirstfunction 老馬的程式人生 傳遞進來的老馬的程式人生叫做實參,因為ta是具體...
lambda表示式 lambda表示式
1.概述 c 11 中的 lambda 表示式用於定義並建立匿名的函式物件,以簡化程式設計工作。lambda 的語法形式如下 函式物件引數 操作符過載函式引數 mutable 或 exception 宣告 返回值型別可以看到,lambda 主要分為五個部分 函式物件引數 操作符過載函式引數 muta...