Python函式與模組 函式定義與使用

2021-09-16 12:58:07 字數 3375 閱讀 7985

一.函式定義與使用

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作為函式返回值

"""

定義乙個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))

3.幾種在函式內部修改實參值的情況

def modify(m,k):

m=2k[0]=0

return

n=100

l=[1,2,3]

modify(n,l)

print(n)

print(l)

n=100

l=[0,2,3]

def modify2(v,item):

a=[2]

modify2(a,3)

print(a)

a=[2,3]

def modify3(d):

d['age']=18

a=print(a)

modify3(a)

print(a)

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 張海

#小名 小海

#小名 小豆豆

=>表示將沒有匹配的值都放在乙個字典中

def demo(**p):

for item in p.items():

print(item)

demo(x=1,y=2,z=3)

#('x', 1)

#('y', 2)

#('z', 3)

5.變數作用域

=>區域性變數

區域性變數在函式內部定義的變數,旨在該函式內部起作用。

與函式外具有相同名的其他變數沒有任何關係-變數名稱對於函式來說是區域性的

=>全域性變數

全域性變數在函式外部定義,並且可以直接在函式中使用。

若要在函式內部改變全域性變數值,必須使用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 二 函式自己呼叫自己,遞迴...