08Python學習函式講解

2021-09-23 18:15:08 字數 3534 閱讀 5559

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

特性:

減少重複**

使程式變的可擴充套件

使程式變得易維護

>>

>

deffuncname

(v):

#定義函式名,形參..

.print

(v)...

>>

> funcname(

"hello"

)#呼叫函式

hello

正常情況下,給函式傳引數要按順序,不想按順序就可以用關鍵引數,只需指定引數名即可,但記住乙個要求就是,關鍵引數必須放在位置引數之後。

>>

>

deffunca

(x,y,z)

:# 定義函式..

.return x*y-z..

.>>

> funca(1,

2,3)

# 按順序匹配-1

>>

> funca(

1,z=

3,y=2)

# 按變數名匹配 關鍵引數必須放在位置引數之後

-1

可變引數舉例

非固定引數

若你的函式在定義時不確定使用者想傳入多少個引數,就可以使用非固定引數*args

>>

>

defstu_register

(name,age,

*args)

:# *args 會把多傳入的引數變成乙個元組形式..

.print

(name,age,args)..

.>>

> stu_register(

"alex",22

)alex 22()

>>

> stu_register(

"jack",32

,"cn"

,"python"

)jack 32

('cn'

,'python'

)

還可以有乙個**kwargs

>>

>

defstu_register

(name,age,

*args,

**kwargs)

:# *kwargs 會把多傳入的引數變成一 個dict形式..

.print

(name,age,args,kwargs)..

.>>

> stu_register(

"alex",22

)alex 22()

>>

> stu_register(

"jack",32

,"cn"

,"python"

,***=

"male"

,province=

"shandong"

)jack 32

('cn'

,'python'

)

總結:

按照從左到右的順序定義的引數

位置形參:必選引數

位置實參:按照位置給形參傳值

按照key=value的形式定義的實參,無需按照位置為形參傳值。 注意的問題:

①==關鍵字實參必須在位置實參右面==

②==對同乙個形參不能重複傳值==

形參在定義時就已經為其賦值,可以傳值也可以不傳值,經常需要變得引數定義成位置形參,變化較小的引數定義成預設引數(形參)。注意的問題:

①只在定義時賦值一次

②**預設引數的定義應該在位置形參右面**

③==預設引數通常應該定義成不可變型別==

可變長指的是實參值的個數不固定。 而實參有按位置和按關鍵字兩種形式定義,針對這兩種形式的可變長,形參對應有兩種解決方案來完整地存放它們,分別是*args,*kwargs

5、命名關鍵字引數:*後定義的引數,必須被傳值(有預設值的除外),且必須按照關鍵字實參的形式傳遞

>>

>

defno_return

(x):..

.print

(x)...

>>

> fun = no_return(10)

#呼叫函式,並賦值給fun變數

10>>

>

print

(fun)

#無返回值,直接返回none

none

>>

>

defreturn_value

(x,y):.

..return x+y..

.>>

> res = return_value(3,

4)#通過返回值,賦值給res

>>

>

print

(res)

7

>>

>

defyield_value

(x):..

.for i in

range

(x):..

. name =

yield i #yield i => 等價在呼叫一次next方法時,return i 其次 在呼叫send方法時,把值傳送給yield並賦值給name..

.print

("name is:%s"

% name)..

.>>

> yv = yield_value(5)

>>

> yv.send(

none)0

>>

> yv.send(

none

)name is

:none

1>>

> yv.send(

"hello"

)name is

:hello

2>>

> yv.send(

"world"

)name is

:world

3>>

> yv.send(1)

name is:1

4>>

> yv.send(1)

name is:1

traceback (most recent call last)

: file ""

, line 1,in

stopiteration

>>

> yv.send(2)

traceback (most recent call last)

: file ""

, line 1,in

stopiteration

08 python基礎學習 0412

知識點學習 1.list複習,tuple學習 list列表 一種資料型別,有序集合,可以任意新增刪除元素。tuple 的缺陷 當你定義乙個tuple時,在定義的時候,tuple 的元素就必須被確定下來。eg t 1,2 t 1,2 1.定義乙個空tuple tuple 2.定義只有乙個元素的tupl...

08 python 元組 字典 集合

4.遍歷字典 5.集合 元組基本介紹 python中,數值型別 int和float 字串str 元組tuple都是不可變型別。而列表list 字典dict 集合set是可變型別 可變物件中都儲存了三個資料 id 標識 type 型別 value 值 字典的作用和列表類似,都是用來儲存物件的容器 列表...

08 Python之記憶體管理

python中的記憶體管理,從淺層次來說,可以分為3個方面來講 1,引用計數 python中引用計數,為了跟蹤記憶體的物件 當建立物件的時候即被引用了,當物件不再被使用時,即某個物件的引用計數為0,它被垃圾 2,垃圾 機制 python可以不事先宣告變數型別而直接對變數進行賦值,垃圾 器會去檢查哪些...