目錄
1、函式的結構
2、函式的幾個特點
3、函式返回多個結果
4、序列解包
5、引數
1)必須引數:
2)關鍵字引數:
3)預設引數:
4)可變引數。
5)關鍵字可變引數
6、作用域鏈
7、global關鍵字
def funcname(parameter_list),函式體需要縮排
引數列表可以沒有;
函式體裡可以使用return來返回結果;如果沒有return這個關鍵字,則python認為該函式返回的是none這樣乙個空值。
函式定義後,必須要呼叫這個函式,才能起作用。
呼叫必須放在函式定義之後,不能在之前。
系統預設995次遞迴,超出則報錯。可用import sys, sys.setrecursionlimit(1000000)來設定遞迴次數;實際上達不到百萬次的遞迴。
定義函式或變數時,盡量避免和python的內建函式同名。
1、return 後面的語句不會執行/2.
2、用序號顯示返回結果是非常不好的習慣
3、好的方式是:用倆個變數來接收返回結果
def a(a1,b1):
first = a1
second = b1
return a1,b1
a2,b2 = a(3,6)
print(a2,b2)
a=1,b=2,c=3 可以寫為 a,b,c=1,2,3 序列解包的方法可以用於所有組合,字典中只會返回key. 需要注意的是,變數的數量,必須和組合內元素的數量一致,才可以使用序列解包。
d=1,2,3 d=(1,2,3) d就會變成乙個tuple型別,這個是反向解包,反向解包只能生產元祖。如果對多個變數賦予相同的值,可以用鏈式賦值, a=b=c=1
函式的引數列表中定義的必須賦值的引數。必須放在引數列表的前面。
可以在函式呼叫時明確指出實參是傳給哪個形參的,不一定要按照形參順序。如:
def add(x, y):
...return result
c = add(y = 3, x = 2)
沒有設定預設值的引數必須傳遞實參。
想讓引數擁有預設值,就需要將需要的預設值賦值給形參,在定義時需要注意到的點
沒沒有給形參傳遞預設值,則需要傳遞實參
注意的坑:
不能將非預設引數放置在預設引數之後,不論定義與呼叫
如果想讓某乙個特定引數傳遞引數應該使用關鍵字指定要改變的預設引數否則將會根據預設引數的順序進行傳遞
在傳遞預設引數時,不可以將關鍵字引數傳遞與按順序傳遞的方式穿插混用
定義乙個擁有可變引數的函式: 括號內形參前加星號*
python會自動把可變引數列表所對應的實參組裝成乙個tuple;
呼叫時直接傳元組,則返回的結果是乙個二維元組;若不想形成二維陣列,呼叫時可以使用*,它將把元組裡的元素平鋪傳遞給函式。此時,*的作用是把元組裡面的元素平鋪出來,傳遞給函式;
可變引數可以和其他型別引數結合記起來。如可以在定義時加上必須引數,但可變引數必須要放在後面;
函式引數的順序是,必須引數、可變引數,預設引數必須在最後;當需更改預設引數值,必須用關鍵字引數給預設引數賦值;
盡量保證函式引數的種類簡單
如:
def demo(*param):
print(param)
print(type(param))
demo(1,2,3,4,5)
'''結果為:
1,2,3,4,5
tuple型別
也就是說python會自動將可變引數對應的實參轉化成tuple型別。
'''
格式:
def demo(**param):
pass
這樣在呼叫時可以傳遞多個關鍵字引數,此時python會將其轉化為字典型別dict。若還想傳遞字典型別而不轉化為多維陣列,呼叫時需加上**。
小技巧:
遍歷字典型別資料方法:
for key,value in param.items():
print(key, ':', value)
區域性變數會在作用域內被優先使用;
區域性變數具有相對性。如c=2這個變數在func1()函式中是區域性變數,但對func2()函式來說,卻是它的上一級,因此不是區域性變數,可以被func2()來引用;
逐層逐級向外尋找變數的定義,很像乙個鏈條,因此作用域有鏈式的特性;
如果是for迴圈向函式體內尋找變數,算作用域鏈嗎?不算。原因是for迴圈體不是乙個作用域,它對迴圈體外變數的呼叫屬於函式體內變數呼叫的正常行為。
作用:在函式外部引用函式內部變數,即把區域性變數變成函式外部可引用的變數。
def demo():
global c
c = 2
demo()
print(c)
注:import 匯入模組後可以使用模組的全域性變數。 python函式詳解
1 必備引數 注意 個數不能多也不能少 位置必須一一對應 def print info name,address print 我是 s,目前居住在 s name,address print info 小明 中國大陸 輸出 我是小明,目前居住在中國大陸 2 關鍵字引數 注意 一般要寫的話,關鍵字都寫 ...
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個 ...