第10講 python 函式基礎

2021-09-28 16:28:15 字數 4210 閱讀 9775

函式也是乙個物件,物件是記憶體中專門用來儲存資料的一塊區域

函式就是用來儲存一些可以執行的**,並且可以在需要的時候,對這些**進行多次呼叫

定義函式的語法:

def 函式名([形參1,形參2…]):

**塊定義乙個函式

def fn():

print(『這是我第乙個函式』)

print(fn) 這是函式儲存的記憶體位址

函式和變數沒有區別,都是存放資料的

fn 是函式物件 fn() 是呼叫函式

函式中儲存的**塊不會立即執行,需要呼叫函式**才會執行

呼叫函式:函式物件()

在定義函式的時候,可以在函式後面的括號定義數量不等的形參,多個形參用「,」號隔開

形參:形式引數,定義形參就相當於在函式內部宣告了變數,但不賦值

實參:實際引數,如果指定了形參,那麼在呼叫函式的時候必須傳遞實際引數,實際引數將會賦值給對應的形參,就是有幾個形參就需要傳遞幾個實參。

定義乙個函式,求任意兩個數的和

def sum():

a = 1

b = 1

print(a + b)

def fn2(a,b):

print(『a = 『,a)

print(『b = 『,b)

print(a,』+』,b ,』=』 ,a+b)

呼叫函式:

fn(2,3)

返回值:

a = 1

b = 2

1 + 2 = 3

定義形參時,可以給形參指定預設值

制定了預設值之後,如果使用者傳遞了實參,則預設值不會發揮作用

如果使用者沒有傳遞實參,則預設值會發揮作用

實參優先

def fn3(a,b,c=20):

print(『a=』,a)

print(『b=』,b)

print(『c=』,c)

fn3(1,2,3)

返回值:

a= 1

b= 2

c= 3

fn3(1,2)

返回值a= 1

b= 2

c= 20

位置傳參

位置引數就是將對應位置的實參賦值給對應位置的形參

第乙個實參賦值給第乙個形參,第二個實參賦值給第二個形參

關鍵字引數可以不按照形參定義的順序傳遞,而根據引數名傳遞

實參優先

位置引數和關鍵字引數可以混合使用

混合使用的時候關鍵字和位置引數時,必須將位置引數寫在關鍵字前面

def fn4(a=10,b=30,c=20):

print(『a=』,a)

print(『b=』,b)

print(『c=』,c)

fn4(1,c=2,b=3)

返回值:

a= 1

b= 3

c= 2

def fn5(a):

print(『a=』,a)

b = 123

fn5(b)

返回值:a=123

fn5(『python』)

返回值:a=python

fn5(none)

返回值:a=none

fn5(false)

返回值:a=false

def fn4(a = 20):

print(『a=』,a)

def fn5(a):

print(『a=』,a)

fn5(fn4)

返回值:a=

def fn6(a,b):

print(a + b)

fn6(123,『456』)

返回錯誤:整形與字串不能相加

traceback (most recent call last):

file 「」, line 1, in

fn6(123,『456』)

file 「」, line 2, in fn6

print(a + b)

typeerror: unsupported operand type(s) for +: 『int』 and 『str』

在定義函式時,可以在形參前面加上乙個*,這樣做的好處是這個形參可以獲取到所有的實參

他將把所有的實參儲存到乙個元祖中

定義乙個函式,求任意個數的和

def sum(a,b,c):

print(a + b + c)

def fn(*a):

print('a = ',a,type(a))

fn(1,2,3,4,5)

返回值:a = (1, 2, 3, 4, 5)

這是乙個裝包的過程

def fn(*a):

#定義乙個變數,用來儲存結果

result = 0

#a以元祖形式接收全部引數,遍歷元祖,並將元祖中的數解包進行計算

for n in a:

result = result + n

print(result)

fn(1,3,4,5,7)

返回值:20

不定長引數不是必須寫在最後,但是要注意,帶 * 號的引數後面的所有引數,必須以關鍵字的引數形式傳遞

def fn2(a,b,*c):

print('a = ',a)

print('b = ',b)

print('c = ',c)

fn2(1,2,3,4,5)

返回值:

a = 1

b = 2

c = (3, 4, 5)

def fn2(a,*b,c):

print('a = ',a)

print('b = ',b)

print('c = ',c)

fn2(1,2,3,4,c=5)

返回值:

a = 1

b = (2, 3, 4)

c = 5

如果在形參的開頭直接寫*,則要求我們所有的引數要以關鍵字傳遞

如果只有乙個不定長引數,那麼這個不定長引數只能接受位置引數,不能接受關鍵字引數

例如:def fn3(*a):

print('a = ',a)

fn3(b=1,d=2,c=3) 報錯

traceback (most recent call last):

file 「」, line 1, in

fn3(b=1,d=2,c=3)

typeerror: fn3() got an unexpected keyword argument 『b』

**形參可以接受其他的關鍵字引數,他會將這些引數統一儲存到乙個字典中,自定義的key就是關鍵字的名字,字典的value就是引數的值

**形參只能有乙個並且必須寫在所有引數後面

def fn3(**a):

print('a = ',a)

fn3(b=1,d=2,c=3)

返回值a =

def fn4(b,c,**a):

print(『a =』,a)

print(『b =』,b)

print(『c =』,c)

fn4(b=1,d=2,c=3,e=5,f=20)

返回值a =

b = 1

c = 3

(*a處理位置引數,**a處理的是關鍵字引數)

def fn4(a,b,c):

print(『a =』,a)

print(『b =』,b)

print(『c =』,c)

建立乙個元祖

t = (10,20,30)

fn4(t[0],t[1],t[2])

返回值:

a = 10

b = 20

c = 30

傳遞引數,也可以在序列型別的引數新增*,這樣他會自動將序列中的元素依次解包,當作引數來傳遞

這裡要求序列中的元素個數必須和形參的個數保持一致

fn4(*t)

返回值a = 10

b = 20

c = 30

建立乙個字典

d =

fn4(**d)

返回值a = 1

b = 2

c = 3

def fn2(a,*b,**c):

print('a = ',a)

print('b = ',b)

print('c = ',c)

fn2(2,4,1,d=3,e=4)

返回值:

a = 2

b = (4, 1)

c =

第10講 BTC 分叉

block size limit 1m 4m 位元幣協議公升級,如增大區塊尺寸。部分更新的節點,生成的區塊都是大區塊,他們會在大區塊或者小區塊之後繼續接上區塊。對於舊節點,認為大區塊和大區塊所在的鏈均是非法的,只會在小區塊後面繼續加入區塊 當新節點算力大於舊節點,大區塊形成的分鏈成為主鏈。但是只要有...

Python基礎10 函式

直接貼筆記 usr bin env python coding utf 8 定義函式時要寫成良好的注釋習慣 通常用三個單引號 deftest x 計算乙個y 2 x 1 param x 整型 return 整型 y 2 x 1 returny print test print test 4 本次課參...

第23講 python的讀操作基礎

a file obj.read 預設讀全部 b file obj.read 15 唯讀15個字元 help file.read 檢視幫助 eg2 file obj open test.txt r line1 file obj.readline print line1 line1 me print的逗...