一.函式定義與使用
1.函式定義
python中函式的定義與宣告是視為一體的。
def 函式名(函式引數):
函式體return 表示式或值
注:=>python中變數是弱型別的,python會自動根據值來維護其型別。所以不用指定返回值及函式引數的型別
=>若沒有return語句,則自動返回none;如果有return語句但return後沒有接表示式或值,則也返回none
=>python中可以返回多個值,將多個值放在乙個元組或者其他型別的集合中來返回。 如:return (x,y)
=>引數的傳遞是值傳遞,一般情況下,修改形參不會影響實參
2.lambda表示式
lambda表示式可以用來宣告匿名函式
匿名函式:沒有函式名字的臨時使用的函式,只可以包含乙個表示式,且表示式的結果為函式返回值;
不允許包含其他複雜的語句,但在表示式中可呼叫其他函式
lambda 函式引數:表示式
(1)函式的列表:將lambda表示式作為列表的元素,從而實現跳轉表的功能
l=[(lambda 表示式1),(lambda 表示式2),...]
呼叫方法:l[索引](lambda表示式的引數列表)
(2)lambda作為函式返回值
3.幾種在函式內部修改實參值的情況"""
定義乙個math():
k=1,返回計算加法的lambda表示式;
k=2,返回計算減法的lambda表示式;
k=3,返回計算乘法的lambda表示式;
k=4,返回計算除法的lambda表示式;
"""def math(k):
if k==1:
return lambda x,y:x+y
elif k==2:
return lambda x,y:x-y
elif k==3:
return lambda x,y:x*y
elif k==4:
return lambda x,y:x/y
action=math(1)
print("10+2=",action(10,2))
action=math(2)
print("10-2=",action(10,2))
action=math(3)
print("10*2=",action(10,2))
action=math(4)
print("10/2=",action(10,2))
n=100def modify(m,k):
m=2k[0]=0
return
n=100
l=[1,2,3]
modify(n,l)
print(n)
print(l)
l=[0,2,3]
a=[2,3]def modify2(v,item):
a=[2]
modify2(a,3)
print(a)
a=def modify3(d):
d['age']=18
a=print(a)
modify3(a)
print(a)
4.函式引數型別
=>預設值引數
=>關鍵字引數def display(a='hello',b='world'): #預設值引數能夠給函式引數提供預設值
print(a+b)
display()
display(b='world') #指定b的值
display(a='hello') #指定a的值
display('world') #未指定'world'傳給a還是b,則預設從左向右匹配,即傳給a
#helloworld
#helloworld
#helloworld
#worldworld
位置引數:引數通過位置進行匹配,從左到右依次匹配,對引數位置和個數都有嚴格要求
關鍵字引數:通過引數名字來匹配,不需要嚴格按照引數定義時的位置來傳遞引數
如:display(a='hello')
=>任意個數引數
一般情況下定義函式時,函式引數個數確定,然而某些情況下不能確定引數個數,只需在引數前面加上『*』或者'**'
=>'*'表示將沒有匹配的值都放在同乙個元組中
=>表示將沒有匹配的值都放在乙個字典中def storename(name,*nickname):
print('real name is %s'%name)
for nickname in nickname:
print("小名 ",nickname)
storename('張海')
storename('張海','小海')
storename('張海','小海','小豆豆')
#real name is 張海
#real name is 張海
#小名 小海
#real name is 張海
#小名 小海
#小名 小豆豆
5.變數作用域def demo(**p):
for item in p.items():
print(item)
demo(x=1,y=2,z=3)
#('x', 1)
#('y', 2)
#('z', 3)
=>區域性變數
區域性變數在函式內部定義的變數,旨在該函式內部起作用。
與函式外具有相同名的其他變數沒有任何關係-變數名稱對於函式來說是區域性的
=>全域性變數
全域性變數在函式外部定義,並且可以直接在函式中使用。
若要在函式內部改變全域性變數值,必須使用global關鍵字進行宣告
注 =>若在函式內部直接將乙個變數宣告為全域性變數,在函式外沒有定義,則在呼叫該函式後,將變數增加為新的全域性變數x=2
def fun1():
print(x,end=" ")
def fun2():
global x
x=x+1
print(x,end=" ")
fun1()
fun2()
print(x,end=" ")
#2 3 3
=>若乙個區域性變數和乙個全域性變數重名,則區域性變數會「遮蔽」全域性變數,區域性變數起作用
python 函式與模組
1,定義函式 def 函式名 參數列 函式語句 return 發回值 引數和返回值都可以省略 def hello print xyf 無敵 hello 2,引數傳遞 def add a,b return a b print add a b 順序依次傳遞 print add b a a b 按形參賦值...
Python 函式與模組等
參考 菜鳥教程 2 模組 3 檔案 io 4 異常 函式內容以冒號起始,並且縮排 不帶表示式的return相當於返回 none def functionname parameters function suite return expression 可變更和不可變更物件的傳遞 我的理解 usr bi...
python內建函式與模組
一 函式中如果return是多個引數,只用乙個引數接收時,是元組 也可以用多個引數接收,那就是解包 def func a 1 b 2 c 3 return a,b,c q,w,e func print func type func q,w,e 輸出 1,2,3 1 2 3 二 函式自己呼叫自己,遞迴...