A17 Python基礎之函式

2021-10-02 11:04:33 字數 4401 閱讀 4345

封裝**,高效的**重用

函式的定義(先):

def 函式名(引數):

**1**2

....

呼叫函式(後):

函式名(引數)
注意:

1、不同需求,引數可有可無。

2、在python中,函式必須先定義,後使用。

3、呼叫函式的時候,直譯器回到定義函式的地方去執行下方縮排的**。

4、然後回到呼叫函式的地方,繼續向下執行。

5、定義函式的時候,函式體內部縮排的**並沒有執行。

呼叫函式的時候指定具體數字,那麼在定義函式的時候就需要接收使用者指定的數字,函式呼叫的時候指定的數字和定義函式時候接收的數字即是函式的引數。

def add_num(a,b):

result=a+b;

print(result)

add_num(10,20)

其中,a,b為形參,10,20為實參。

形參為定義函式時,實參為呼叫函式時。

需要返回結果給使用者需要使用函式返回值。

def sum(a,b)

return a+b

print(sum(10,20)) #30

return作用:負責函式返回值,退出當前函式,return下方**不執行。

help(函式名)  #help函式作用:檢視函式的說明文件
定義函式的說明文件:

def 函式名(引數):

"""說明文件的位置"""

**

示例:

def sum(a,b):

"""求和"""

return a+b

help(sum)

print(sum.__doc__)

輸出:

help on function sum in module __main__:

sum(a, b)

求和求和

指的是乙個函式裡面又呼叫了另乙個函式。

輸入:

def fun1():

print("正在呼叫fun1()...")

def fun2():

print("正在呼叫fun2()...")

fun2()

輸出:

正在呼叫fun1()...

正在呼叫fun2()...

在python中表示乙個空的語句塊。

def somefunction():

pass

帶有兩個下劃線開頭的函式是宣告該屬性為私有,不能在類地外部被使用或直接訪問。

init函式(方法)支援帶引數的類的初始化 ,也可為宣告該類的屬性 。

init函式(方法)的第乙個引數必須是 self(self為習慣用法,也可以用別的名字),後續引數則可 以自由指定,和定義函式沒有任何區別。

定義在函式體內部,只在函式體內部生效,在函式體外部訪問立即報錯。

在函式體內部臨時儲存資料,函式呼叫完成後,則銷毀區域性變數。

在函式體內、外都能生效。

a = 10 #全域性變數

def testa():

print(a) #訪問全域性變數

testa() #10

a = 10 #全域性變數

def testa():

a = 20 #這個a是區域性變數

print(a)

testa() #20

print(a) #10

修改全域性變數:

a = 10

def testa():

print(a)

def testb():

global a #global關鍵字宣告a是全域性變數

a = 20

print(a)

testa() #10

testb() #20

print(a) #20

多函式共用全域性變數,隨著函式執行過程而變化。

def a():

return 10

def b(num):

print(num)

b(a()) #10

def return_num():

return 1,2 #後面也可以直接寫元組-列表-字典,返回多個值

print(return_num()) #(1,2)元組 預設返回元組

呼叫函式時根據函式定義的引數位置來傳遞引數。

注意:傳遞和定義引數的順序及個數必須一致。

示例:

def user(name,age,gender):

print(f"您的名字是,年齡是,性別是")

user("tom",20,"男") #您的名字是20,年齡是tom,性別是男

函式呼叫,通過"鍵=值"形式加以指定,清除了引數的順序需求。函式呼叫時,如果有位置引數時,位置引數必須在關鍵字引數的前面。但是關鍵字引數之間不存在先後順序。

示例:

def user(name,age,gender):

print(f"您的名字是,年齡是,性別是")

user("tom",gender="男",age=20)

#您的名字是tom,年齡是20,性別是男

預設引數,用於定義函式,為引數提供預設值,呼叫函式時可不傳遞該預設引數值,所有位置引數必須出現在預設引數前,包括函式定義和呼叫

示例:

def user(name,age,gender="男"):

print(f"您的名字是,年齡是,性別是")

user("tom",20)

#您的名字是tom,年齡是20,性別是男

也叫可變引數,用於不確定呼叫的時候會傳遞多少個引數(不傳參也行),用包裹(packing)位置引數,或者包裹關鍵字引數,來進行引數傳遞。

包裹位置傳遞:返回乙個元組

示例:

def user(*args):

print(args)

user("tom",18) #('tom', 18)

傳進的所有引數都被args變數接收,它會根據引數的位置合併成乙個元組(tuple),args是元組型別,這就是包裹位置傳遞。

包裹關鍵字傳遞:返回乙個字典

示例:

def user(**kwargs):

print(kwargs)

user(name="tom",age=18,id=1998) #

拆包-元組:

def return_num():

return 100,200

num1,num2 = return_num()

print(num1) #100

print(num2) #200

拆包-字典:

dict1 = 

a,b = dict1

print(a) #name

print(b) #age

print(dict1[a]) #tom

print(dict1[b]) #18

簡寫式:

a,b = 1,2

a,b = b,a

print(a) #2

print(b) #1

def fun1(x):

def fun2(y):

return x*y

return fun2

print(fun1(8)(5)) #40

def fun1():

x = 5

def fun2():

x *= x

return x

return fun2()

#報錯#fun2()裡x未定義

def fun1():

x = 5

def fun2():

nonlocal x #不能用global因為x不是全域性變數

x *= x

return x

return fun2()

print(fun1()) #輸出:25

歡迎指正錯誤!

python之函式基礎

python 函式 python函式可以返回多值 defadd dif x,y,sum x y dif x y return sum,dif a,b add dif 2,3 print a,b 5 1 r add dif 2,3 print r 5,1 本質來說返回多值的函式其實返回乙個元組tupl...

Python基礎之函式

不同型別的引數的優先順序 在引數列表中的順序 def testfunc1 pass這是乙個最簡單的函式,沒有引數,沒有返回,pass表示該函式沒有做任何操作,testfunc1是函式名,def是關鍵字,表示這是乙個函式 呼叫函式時給出函式並給函式傳遞相應的引數,對於命名關鍵字引數需要給出引數名,位置...

Python之函式(基礎)

1.函式的定義 1 函式的定義與呼叫 定義函式 def say hello print hello1 print hello2 print hello3 呼叫函式,函式只有被呼叫了才會有輸出值 示例1 定義求和函式 計算 20 30 2 函式的巢狀 def fun1 print world def ...