06 Python之函式呼叫與定義

2021-09-19 03:07:58 字數 3227 閱讀 1754

python內建了很多有用的函式,可以直接呼叫

要呼叫乙個函式,需要知道函式的名稱和引數,比如求絕對值的函式abs,只有乙個引數

也可以在互動式命令列通過help(abs)檢視abs函式的幫助資訊

help

(abs

)

help on built-in function abs in module builtins:

abs(x, /)

return the absolute value of the argument.

abs(-

10)

10
在python中,定義乙個函式要使用def語句,依次寫出函式名、括號、括號中的引數和冒號;然後,在縮排塊中編寫函式體,函式的返回值用return語句返回

# 定義乙個球兩數之和的函式:

defadd_two

(a,b)

:return a+b

add_two(10,

22)

32
請注意,函式體內部的語句在執行時,一旦執行到return時,函式就執行完畢,並 將結果返回。因此,函式內部通過條件判斷和迴圈可以實現非常複雜的邏輯

如果沒有return語句,函式執行完畢後也會返回結果,只是結果為none

return none可以簡寫為return

定義函式的時候,我們把引數的名字和位置確定下來,函式的介面定義就完成了。對於函式的呼叫者來說,只需要知道如何傳遞正確的引數,以及函式將返回什麼樣的值就夠了,函式內部的複雜邏輯被封裝起來,呼叫者無需了解。

# 求x的平方

defpower

(x):

return x*x

power(

5)

25
# 求x的n次冪,設定n的預設值為2

defpower

(x,n=2)

:return x**n

power(5,

3)

125
設定預設引數時,有幾點要注意:

1.必選引數在前,預設引數在後,否則python的直譯器會報錯(思考一下為什麼預設引數不能放在必選引數前面)

2.如何設定預設引數

當函式有多個引數時,把變化大的引數放前面,變化小的引數放後面。變化小的引數就可以作為預設引數

使用預設引數有什麼好處?最大的好處是能降低呼叫函式的難度

在python函式中,還可以定義可變引數。顧名思義,可變引數就是傳入的引數個數是可變的,可以是1個、2個到任意個,還可以是0個

這裡以數學題為例,給定一組數字a,b,c…,計算a+b+c…

要定義出這個函式,我們必須確定輸入的引數。由於引數個數不確定,我們首先想到可以把a,b,c,…作為乙個list或tuple傳進來,這樣。函式可以定義如下:

def

calc

(numbers)

: amount =

0for num in numbers:

amount += num

return amount

numbers =

[100

,200,3

,4]calc(numbers)

307
如果利用可變引數,我們把函式的引數改為可變引數:

def

calc

(*numbers)

: amount =

0for num in numbers:

amount += num

return amount

calc(1,

2,3,

4,5,

7)

22
可變引數允許你傳入0個或任意個引數,這些可變引數在函式呼叫時自動組裝為乙個tuple。而關鍵字引數允許你傳入0個或任意個含引數名的引數,這些關鍵字引數在函式內部自動組裝為乙個dict

def

get_kwatgs

(**kwargs)

:print

(kwargs)

get_kwatgs(a=

10,b=

"hello"

,c=[

"a",1,

"bcd"

])

在python中定義函式,可以用必選引數、預設引數、可變引數和關鍵字引數,這4種引數都可以一起使用,或者只用其中某些,但是請注意,引數定義的順序必須是:必選引數、預設引數、可變引數和關鍵字引數。

def

func

(a,b,c=0,

*args,

**kw)

:print

("a="

,a,"b="

,"c="

,c,"args="

,args,

"kw="

,kw)

func(10,

20,30,

"d",

"e",

"f",x=

99,y=

"hello"

)

a= 10 b= c= 30 args= ('d', 'e', 'f') kw=
python使用 lambda來建立匿名函式

lambda只是乙個表示式,函式體比def簡單很多

lambda的主體是乙個表示式,而不是乙個**塊。僅僅能在lambda表示式中封裝有限的邏輯

lambda函式擁有自己的名字空間,且不能訪問自有引數列表之外或全域性名字空間裡的引數

雖然lambda函式看起來只能寫一行,卻不等同於c或c++的內聯函式,後者的目的是呼叫小函式時不占用棧記憶體從而增加執行效率。

# 定義lambda函式

f =lambda x: x*x

[f(i)

for i in

range(10

)]

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

06python基礎高階之網路程式設計

一.ip位址 ip是可聯網裝置在網路中的邏輯位址,在同一網路中是唯一的 用來在網路中標記某個裝置 ifconfig ipconfig檢視網絡卡資訊 192.168.私有ip 127.0.0.1 環迴位址 本機ip位址 二.埠 port 1 作用 埠是傳輸資料的通道,好比教室的門,是資料傳輸必經之路 ...

Python基礎之 函式 (06)

1什麼是函式?函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的 段。函式能提高應用的模組性,和 的重複利用率。2定義函式 要想定義乙個由自己想要功能的函式,要遵守以下基本的規則 任何傳入引數和自變數必須放在圓括號中間,圓括號之間可以用於定義引數。函式的第一行語句可以選擇性地使用文件字串 用...

Python建立與呼叫函式

今天我們來講python裡的建立與呼叫函式。先講建立函式,建立函式使用def關鍵字,就是define的縮寫。上 看看吧 def say info print info 這就是乙個名叫say的函式,我們來看看這個函式的結構 def 函式名 引數列表 函式體注意,def建立函式也需要縮排。現在我們說說引...