python學習筆記11(函式)

2021-09-06 15:29:24 字數 3972 閱讀 8270

概述:在乙個完整的專案中,某些功能會反覆的使用。那麼會將功能封裝成函式,當我們要使用功能的時候直接呼叫函式即可

本質:函式就是對功能的封裝

優點

1、簡化**結構,增加了**的復用度(重複使用的程度)

2、如果想修改某些功能或者除錯某個bug,只需要修改對應的函式即可

定義函式:

格式:

def 函式名(引數列表):

語句return 表示式

注釋:

def:函式**塊以def關鍵字開始

函式名:遵循識別符號規則

():是引數列表的開始和結束

引數列表(引數1,引數2,……,引數n):任何傳入函式的引數和變數必須放在圓括號之間,用逗號分隔。函式從函式的呼叫者**獲取的資訊

冒號:函式內容(封裝的功能)以冒號開始,並且縮排

語句:函式封裝的功能

return:一般用於結束函式,並返回資訊給函式的呼叫者

表示式:即為要返回給函式的呼叫者的資訊

注意:最後的return 表示式,可以不寫,相當於return none

函式的呼叫

格式:函式名(引數列表)

函式名:是要使用的功能的函式函式名字

引數列表:函式的呼叫者給函式傳遞的資訊,如果沒有引數,小括號也不能省略

函式呼叫的本質:實參給形參賦值的過程

示例:

#定義了乙個無參無返回值的函式

def myprint():

print("sunck is a very good man!")

print("sunck is a nice man!")

print("sunck is a handsome man!")

#呼叫函式

myprint()

形參(形式引數):

概述:定義函式時小括號中的變數,本質是變數,引數必須按順序傳遞,個數目前要對應

def myprint(str, age, hoby):

print(str, age) #並不會報錯

def myprint(str, age):

print(str, age)

實參(實際引數):呼叫函式時給函式傳遞的資料,本質是值

myprint("sunck is a good man", 18)
函式返回值

#實現給函式兩個數,返回這兩個數的和

def mysum(num1, num2):

#將結構返回給函式的呼叫者

return num1 + num2

#執行完return語句,該函式就結束了,return後面的**不執行

print("**********")

res = mysum(1, 2)

print(res)

#輸出:3

引數傳遞

值傳遞:傳遞的是不可變型別(string、tuple、number是不可變的)

def func1(num):

print(id(num))

num = 10

print(id(num))

temp = 20

print(id(temp)) #輸出:1758097008

func1(temp) #num = temp #輸出:1758097008 1758096688

print(temp) #輸出:20,num只在函式內部存在,函式呼叫結束後不存在

引用傳遞:傳遞的可變型別(list、dict、set是可變的)

def func2(lis):

lis[0] = 100

li = [1,2,3,4,5]

func2(li)

print(li) #輸出:[100, 2, 3, 4, 5]

a = 10

b = 10

print(id(a), id(b)) #輸出:1758096688 1758096688

b = 40

print(id(a), id(b)) #輸出:1758096688 1758097648

關鍵字傳遞:允許函式呼叫時引數的順序與定義不一致

def myprint(str, age):

print(str, age)

#使用關鍵字引數

myprint(age = 18, str = "sunck is a good man")

預設引數:呼叫函式時,如果沒有傳遞引數,則使用預設引數

#以要用預設引數,最好將預設引數放到最後

def myprint(str, age = 18):

print(str, age)

myprint("kaige")

#輸出:kaige 18

def func(name, *args):

print(name)

print(type(args))

for x in args:

print(x)

func("sunck", "good", "nice", "handsom")

#輸出:sunck good nice handsom

def mysum(*l):

sum = 0

for i in l:

sum += i

return sum

print(mysum(1,2,3,4,5,6,7)) #輸出:28

**代表鍵值對的引數字典,和*所代表的意義類似

def func2(**kwargs):

print(kwargs)

print(type(kwargs))

func2(x=1, y=2, z=3) #輸出:

匿名函式:不使用def這樣的語句定義函式,使用lambda來建立匿名函式

特點:

1、lambda只是乙個表示式,函式體比def簡單

2、lambda的主體是乙個表示式,而不是**塊,僅僅只能在lambda表示式中封裝簡單的邏輯

3、lambda函式有自己的命名空間,且不能訪問自由引數列表之外的或全域性命名空間的引數

4、雖然lambda是乙個表示式且看起來只能寫一行,與c和c++內聯函式不同。

格式:lambda 引數1,引數2,……,引數n:expression

sum = lambda num1, num2:num1 + num2

print(sum(1,2))

Python學習筆記11 函式

定義函式的時候,我們把引數的名字和位置確定下來,函式的介面定義就完成了。對於函式的呼叫者來說,只需要知道如何傳遞正確的引數,以及函式將返回什麼樣的值就夠了,函式內部的複雜邏輯被封裝起來,呼叫者無需了解。python的函式定義非常簡單,但靈活度卻非常大。除了正常定義的必選引數外,還可以使用預設引數 可...

python學習(11) 函式

函式 1 定義函式 1.1 函式的定義 定義函式是使用def關鍵字來定義的 呼叫函式,可指定函式名以及用括號括起的引數資訊 def say hello 定義乙個函式 print hello world say hello 呼叫函式 1.2 向函式傳遞資訊 可以在函式定義的函式名括號中定義引數資訊,引...

python學習11函式

函式 1.定義 指通過專門的 組織,用來實現特定的功能的 段,具有相對獨立性,可供其他 重複呼叫 2.語法 def 函式名 引數 函式體 return 返回值 3.函式名命名規則 1 符合基本的識別符號命名原則 2 不能與現有內建函式名發生衝突 3 名稱應該準確的表達函式的功能 4.不帶引數的函式 ...