第十課 函式

2021-10-07 06:43:08 字數 2676 閱讀 1745

第十課  函式

一.定義函式

def 函式名(引數1,引數2,...):

"""文件描述"""

函式體return 值

def: 定義函式的關鍵字;

函式名:函式名指向函式記憶體位址,是對函式體**的引用。函式的命名應該反映出函式的功能;

括號:括號內定義引數,引數是可有可無的,且無需指定引數的型別;

冒號:括號後要加冒號,然後在下一行開始縮排編寫函式體的**;

"""文件描述""": 描述函式功能,引數介紹等資訊的文件,非必要,但是建議加上,從而增強函式的可讀性;

函式體:由語句和表示式組成;

return 值:定義函式的返回值,return是可有可無的。

二. 函式的呼叫

函式的使用分為定義階段與呼叫階段,定義函式時只檢測語法,不執行函式體**,函式名加括號即函式呼叫,只有呼叫函式時才會執行函式體**。

#定義階段

def foo():

print('in the foo')

bar()

def bar():

print('in the bar')

#呼叫階段

foo()

三.函式的返回值

使用關鍵字return

若需要將函式體**執行的結果返回給呼叫者,則需要用到return。return後無值或直接省略return,則預設返回none,return的返回值無型別限制,且可以將多個返回值放到乙個元組內。

四.形參和實參

>>>def myfirstfunction(name):

函式定義過程中的name是形式引數叫形參

name只是乙個形式,表示佔據乙個引數位置

>>>myfirstfunction(『小甲魚』)

傳遞進來的小甲魚叫做實參,因為他是具體的引數值

關鍵字實參:在呼叫函式時,實參可以是key=value的形式,稱為關鍵字引數,凡是按照這種形式定義的實參,可以完全不按照從左到右的順序定義,但仍能為指定的形參賦值

eg:>>> register(***='male',name='lili',age=18)

name:lili age:18 ***:male

需要注意在呼叫函式時,實參也可以是按位置或按關鍵字的混合使用,/*但必須保證關鍵字引數在位置引數後面,且不可以對乙個形參重複賦值*/

預設形參:預設形參呼叫時,可以不傳值,那麼就是預設值,傳值就覆蓋預設值。

eg:>>> def register(name,age,***='male'): #預設***的值為male

print('name:{} age:{} ***:{}'.format(name,age,***))

notes:

預設引數必須在位置引數之後

預設引數的值僅在函式定義階段被賦值一次

預設引數的值通常應設為不可變型別

五.變數的作用域

​ 在區域性作用域查詢名字時,起始位置是區域性作用域,所以先查詢區域性命名空間,沒有找到,再去全域性作用域查詢:先查詢全域性命名空間,沒有找到,再查詢內建命名空間,最後都沒有找到就會丟擲異常

x=100 #全域性作用域的名字x

def foo():

x=300 #區域性作用域的名字x

print(x) #在區域性找x

foo()#結果為300

print(x) #在全域性找x,結果為100

global關鍵字

在函式內,無論巢狀多少層,都可以檢視到全域性作用域的名字,若要在函式內修改全域性命名空間中名字的值,當值為不可變型別時,則需要用到global關鍵字

x=1def foo():

global x #宣告x為全域性命名空間的名字

x=2foo()

print(x) #結果為2

六.閉包

如果在乙個內部函式裡,對在外部作用域的變數進行應用,測成為閉包

x=1def outer():

x=2def inner():

print(x) #此處的x就是外部函式的變數x,因此inner為閉包函式

return inner

func=outer()

func() # 結果為2

「閉」代表函式是內部的,「包」代表函式外』包裹』著對外層作用域的引用。因而無論在何處呼叫閉包函式,使用的仍然是包裹在其外層的變數。

七.lambda表示式

>>>def ds(x):

return 2 *x+1

>>>ds(5)

11>>> lambda x : 2*x+1   // 冒號左邊是函式值 右邊是函式的表示式

>>>g = lambda x : 2*x+1

>>>g(5)

11# 1、定義

lambda x,y,z:x+y+z

#等同於

def func(x,y,z):

return x+y+z

# 2、呼叫

# 方式一:

res=(lambda x,y,z:x+y+z)(1,2,3)

# 方式二:

func=lambda x,y,z:x+y+z # 「匿名」的本質就是要沒有名字,所以此處為匿名函式指定名字是沒有意義的

res=func(1,2,3)

12兩個bif

filter()   //相當於乙個過濾器。只保留true,刪除false

map()  // 將一串數字一次作為函式的實參進行運算並返回結果

第十課學習

按鍵在未按下時,處於一種高電平狀態,一般這種情況下,其對io口的電平一致,則不會產生任何效果,只有在按下狀態時,由於與接地的迴路貫通,故相當於微控制器的io口直接接地。從原理圖上看,之所以要接keyin1 keyin4外接至按鍵中,主要原因是為了獲取按鍵的狀態,因為我們只能獲取微控制器的io口狀態,...

第十課 邊框

無邊框 border style none 虛線邊框 border style dotted 虛線邊框 border style dashed 實線邊框 border style solid 雙邊框 border style double 凹槽邊框 border style groove 壟狀邊框 ...

第十課 言葉

言葉 有,在 表示生物的存在 有,在 表示非生物的存在 各式各樣 的 男 人男子 女 人女子 男 子男孩 女 子 女孩 犬狗 貓貓 木 樹,木頭 物 物品,東西 底片,膠卷 電池電池 箱盒子 開關 冷蔵庫冰箱 餐桌 床 棚架子 門 窓窗戶 郵筒,信箱 大廈,大樓 公園公園 吃茶店 咖啡館 本屋書店 ...