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個 ...