python函式詳解

2021-10-06 06:56:23 字數 3791 閱讀 8626

1、必備引數

注意:個數不能多也不能少、位置必須一一對應

def

print_info

(name, address)

:print

("我是%s,目前居住在%s"

%(name, address)

)print_info(

"小明"

,"中國大陸"

)

輸出:我是小明,目前居住在中國大陸

2、關鍵字引數

注意:一般要寫的話,關鍵字都寫

def

print_info

(name, address)

:print

("我是%s,目前居住在%s"

%(name, address)

)print_info(address=

"中國大陸"

, name=

"小明"

)

輸出:我是小明,目前居住在中國大陸

3、預設引數

注意:形參中,預設值引數往右方

def

print_info2

(name, address=

"中國大陸"):

print

("我是%s,目前居住在%s"

%(name, address)

)print_info2(

"小紅"

,"香港"

)

輸出:我是小紅,目前居住在香港

4、不定長引數

注意:(1)args:接收所有未命名的引數(不帶關鍵字),args是乙個元組

(2)* args2:接收所有未命名的引數(帶關鍵字),args2是乙個字典

def

print_info3

(name, address=

"中國大陸"

,*args)

:print

("我是%s,目前居住在%s"

%(name, address)

)print

(args)

print_info3(

"lari"

,"china"

,"a"

,"b"

)def

print_info4

(name, address,

**args)

:print

("我是%s,目前居住在%s"

%(name, address)

)print

(args)

print_info4(

"lari"

,"china"

, age=

21)

輸出:

我是lari,目前居住在china

(『a』, 『b』)

我是lari,目前居住在china

不可變物件(strings、tuple、numbers)傳遞的是物件的值,不是物件本身,修改的是另乙個複製物件的值,不會影響原來物件本身

可變物件(list、set、dict)傳遞的是物件自己,影響原來物件本身

str_word =

"hello"

deffun1

(str1)

: str1 =

"test1"

fun1(str_word)

print

(str_word)

list_test =

["hello"

,"world"

]def

fun2

(list1)

: list1[0]

="baby"

fun2(list_test)

print

(list_test)

輸出:

hello

[『baby』, 『world』]

1、return

return既可以返回乙個值,也可以返回多個值,返回多個值用多個變數接收時,則一一對用,有用乙個變數接收,則返回的是乙個tuple。

def

fun(a, b)

:return a, b

num1, num2 = fun(1,

2)num = fun(1,

2)print

("num1: %d"

% num1)

print

("num2: %d"

% num2)

print

("num:"

, num)

輸出如下:

2、生成器與迭代器

生成器,使用了 yield 的函式被稱為生成器(generator),與return一樣也是用於返回值,不同的是,return返回之後結束,而yeild是在接著上一次結束的地方接著執行,如下段**每次都是從yield後面的print語句開始執行。

def

gen(

max)

: i =

0while i <=

max:

yield i

print

("i="

, i)

i +=

1

a = gen(5)

print

(next

(a))

print

(next

(a))

print

(next

(a))

輸出:

乙個特別的情況,**如下所示,從tmp = yield i開始執行,但是沒有執行yield i,所以tmp 是none,但是12行**,給其傳送給了tmp了值「gfjkfgdj」

def

gen(

max)

: i =

0while i <=

max:

tmp =

yield i

print

("tmp="

, tmp)

i +=

1a = gen(5)

print

(next

(a))

print

(next

(a))

print

(a.send(

"gfjkfgdj"))

print

(next

(a))

輸出:

迭代器,所有的可以用for in的語句都是可迭代物件,但是可迭代物件與與迭代器不用,可迭代物件要想成為迭代器,需要使用iter函式,list、string、dict都是可迭代物件,可迭代物件是可以使用next函式返回下乙個值得物件

lis11 =[0

,1,4

,2]it1 =

iter

(lis11)

print

(next

(it1)

)

輸出為:

Python 函式詳解

目錄 1 函式的結構 2 函式的幾個特點 3 函式返回多個結果 4 序列解包 5 引數 1 必須引數 2 關鍵字引數 3 預設引數 4 可變引數。5 關鍵字可變引數 6 作用域鏈 7 global關鍵字 def funcname parameter list 函式體需要縮排 引數列表可以沒有 函式體...

python函式詳解

1 什麼是函式?函式是一種工具,封裝乙個可重複呼叫的 塊 2 為什麼要用函式?如果不使用函式,將變得冗餘。可讀性差 3 怎麼用函式?定義函式 呼叫函式 有參函式 defadd x,y return x y 無參函式 defwelecome print welecome to my home 空函式 ...

python 函式詳解 Python內建函式詳解

此文參考python文件,然後結合自己的理解,寫下來,一方面方便自己,讓自己好好學習,順便回憶回憶 另一方面,讓喜歡的盆友也參考一下。經查詢,3.6版本總共有68個內建函式,主要分類如下 數 算 7個 型別轉換 24個 序列操作 8個 物件操作 9個 反射操作 8個 變數操作 2個 互動操作 2個 ...