Python第六節 函式的學習

2021-09-26 03:07:43 字數 3626 閱讀 8146

本節將詳細的講解,函式的返回、傳參、全域性變數和區域性變數、巢狀函式等等

函式的定義:函式是將一組語句集合通過乙個名字(函式名)封裝起來,想執行這個函式時,只需呼叫函式名即可

函式的特性:1、減少重複** 2、使程式變的可擴充套件 3、使程式變的易維護

函式格式:

def 函式名(引數列表):

函式體

定義:每個函式都是有返回值的,只是返回的內容不同

1、函式沒有return時

def test1():

pass

print(test1())

>>>>none

返回 none

2、函式返回為空時

def test1():

return

print(test1())

>>>>none

返回 none

3、函式只有乙個返回值時

def test1():

return 1

print(test1())

>>>>1

返回乙個值時,返回的型別可以是任意資料型別(整數、浮點型、字串、布林型、列表、字段、元組等等)

4、函式有多個返回值時

def test1():

return 3,"sdhajhs",(2,3.4,"ss"),[5,'w',"pp"], #用逗號「,」隔開

print(test1())

>>>>(3, 'sdhajhs', (2, 3.4, 'ss'), [5, 'w', 'pp'], )

返回多個值時,返回的型別是元組的形式

固定引數:呼叫函式的時,傳入的實參數量有限制的

==形參:是指函式中的引數名   實參:是指呼叫的引數值==

函式: def test4(x,y): #這個x,y為形參

print(x+y)

1、沒有賦值的實參,就是位置引數,位置引數是實參與形參一一對應(按位置對應的)

test4(1,2) #這個(1,2)就是沒有賦值的實參,也是位置引數

>>>>3

2、賦值的實參,就是關鍵字引數,都是關鍵字引數時,實參與形參數量一致,位置可以不用一致

test4(x=3,y=4) #這個(x=3,y=4)就是賦值的實參,也是關鍵字引數

>>>>7

3、位置引數和關鍵字引數都存在時,位置引數必須寫在關鍵字引數前面

test4(1,y=7)

>>>>8

4、形參最少已經有乙個引數進行的賦值,該引數為預設引數

def test5(x,y=2): #這個y=2就是預設引數

print(x+y)

test5(7) #預設引數非必須傳入

>>>>9

非固定引數:呼叫函式的時,傳入的實參數量沒有限制的

1、傳入元組形式的引數,格式:*引數呼叫名字

def test6(*args):

print(args)

test6(1,2,3,[4,1324,4],5,'zhangsan',) # *args:把n個位置引數,轉變成元組的方式

>>>>(1,2,3,[4,1324,4],5,'zhangsan',)

2、傳入字典形式的引數,格式:**引數呼叫名字

def test8(**kwargs)

print(kwargs)

test8(name="zhangfei",age="34",hight="190") **kwargs:把n個關鍵字引數,轉變成字典的方式

>>>>

3、字典和元組合並

def test8(*args,**kwargs):

print(args)

print(kwargs)

test8(1,2,3,[4,1324,4],5,'zhangsan',name="zhangfei",age="34") #注意元組和字典的格式

>>>>(1, 2, 3, [4, 1324, 4], 5, 'zhangsan')

>>>>

name = "taiyong"  #  這個為全域性變數

def test9(name):

print(name)

name = "dayong" # 這個為區域性變數

print(name)

test9(name)

>>>>taiyong

>>>>dayong

1.在子程式中定義的變數稱為區域性變數,在程式的一開始定義的變數稱為全域性變數。

2.全域性變數作用域是整個程式,區域性變數作用域是定義該變數的子程式。

3.當全域性變數與區域性變數同名時,在定義區域性變數的子程式內,區域性變數起作用;在其它地方全域性變數起作用

4.列表、字典、集合、類,是可以區域性改全域性的,字串、整數是不能改的

定義:在函式內部,可以呼叫其他函式。如果乙個函式在內部呼叫自身本身,這個函式就是遞迴函式

def calc(n):

print(n)

if int(n / 2) == 0:

return n

return calc(int(n / 2))

calc(10,end=',')

>>>>10,5,2,1

注意:

必須有乙個明確的結束條件

每次進入更深一層遞迴時,問題規模相比上次遞迴都應有所減少

遞迴效率不高,遞迴層次過多會導致棧溢位(在計算機中,函式呼叫是通過棧(stack)這種資料結構實現的,每當進入乙個函式呼叫,棧就會加一層棧幀,每當函式返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,遞迴呼叫的次數過多,會導致棧溢位)

定義:變數可以指向函式,函式的引數能接收變數,那麼乙個函式就可以接收另乙個函式作為引數,這種函式就稱之為高階函式。

def add(x, y, f):

return f(x) + f(y)

res = add(4, -6, abs) #ads是內建函式模組,只能實參才能接收函式

>>>>10

定義:沒有函式名的函式,用lambda關鍵字表示

格式:

lambda x:x+1  		  	        #x相對應引數,x+1相當於返回值
例子一:

print(lambda x:x+1) #匿名函式相當於直接返回函式位址值

>>>>at 0x000000000285b620>

func=lambda x:x+1

print(func(10)) #要執行匿名函式,先要給函式附加名字

>>>>11

例子二:

dd=lambda x,y,z:(x+1,y+2,z+1) #多個返回值用括號括起來

print(dd(1,2,3)) #返回元組格式

>>>>(2, 4, 4)

C 學習 第六節

什麼是型別 type 型別在c 中的作用 c 語言的型別系統 變數 物件與記憶體 型別 type 資料型別 性質相同的值得集合 記憶體 內部儲存單元,計算機執行程式的空間 外存 擴充套件儲存器,硬碟 賦值用 判斷用 dynamic 動態字元定義,弱型別的使用方法,c 是強型別程式語言 1 資料型別表...

學習python第六節課

執行的流程 if語句在執行時,會先對條件表示式進行求值判斷,如果為true,則執行if後的語句 如果為false,則不執行 語法 if 條件表示式 塊 塊 塊中儲存著一組 同乙個 塊中的 要麼都執行要麼都不執行 塊以縮排開始,直到 恢復到之前的縮排級別時結束 塊就是一種為 分組的機制 2.1 運算子...

第六節 Node陣列

var arr new array var arr array var arr array 1,2,3,4 var arr var arr 1,2,3 instanceof 操作符 array.isarray 方法 1.將物件的鍵值轉換為陣列 object.keys 2.string型別轉換為陣列 ...