1.普通引數示例如下:
def
counts
(x):
print(x)
這個時候對函式進行呼叫,就必須有乙個對應的實參,否則就會報錯,如下:
counts
(5)5
2.含有預設值引數示例如下:
def
counts
(x,n=3):
while n>0:
x=x+1
n=n-1
return x
這時候,只需傳入對應的x
的實參就ok啦,不過你可以給n
也傳入乙個引數啦
counts
(4)7
注意,帶有預設值的引數,只能在其他引數的後面哦
這裡借用廖雪峰老師的文章函式的引數中的乙個注意事項:
前方高能,請勿跳過預設引數有個大坑,小夥伴們要注意:
先定義乙個函式,傳入乙個list,新增乙個end再返回:
def
add_end
(l=):
return l
當你正常呼叫時,好像並沒問題
>>> add_end([1, 2, 3])
[1, 2, 3, 'end']
>>> add_end(['x', 'y', 'z'])
['x', 'y', 'z', 'end']
但是,坑來了,當你多次呼叫這個函式時,請看
>>> add_end()
['end']
>>> add_end()
['end', 'end']
>>> add_end()
['end', 'end', 'end']
確實是個要補的坑,不過,方法總會有的,我們可以用none
這個不變物件來實現:
def
add_end
(l=none):
if l is
none:
l =
return l
這樣子再也不擔心了,再次借用老師的一段話,請見諒我這種伸手黨,因為我覺得還是老師說得好…………………………
為什麼要設計str、none這樣的不變物件呢?因為不變物件一旦建立,物件內部的資料就不能修改,這樣就減少了由於修改資料導致的錯誤。此外,由於物件不變,多工環境下同時讀取物件不需要加鎖,同時讀一點問題都沒有。我們在編寫程式時,如果可以設計乙個不變物件,那就盡量設計成不變物件。
3.可變引數再說可變引數之前,先看下面的示例,然後兩者對比一下,就能發現「小彩蛋」了…….
示例如下:
def
counts
(numbers):
l=for i in numbers:
return l
注意呼叫的引數書寫格式:
counts
([1,2,3,4,5])
格式就是引數是以list列表
形式傳遞,因為之前說過list的內容是可變的,下面是以可變引數的形式來寫這個例子:
def
counts
(*numbers):
l=for i in numbers:
return l
注意到沒,引數前面多了個*
,這個就相當於標誌該引數是乙個可變引數,再來看看它的呼叫格式:
counts
(1,2,3,4,5)
中間的
去掉了哦,請注意這些細節哦
4.關鍵字引數先普及一下:
可變引數允許你傳入0個或任意個引數,這些可變引數在函式呼叫時自動組裝為乙個tuple。而關鍵字引數允許你傳入0個或任意個含引數名的引數,這些關鍵字引數在函式內部自動組裝為乙個dict。如果你看到
tuple,dict
這些感到有些矇圈,請看我的python之list、tuple、dict、set對比
示例如下:
def
message
(name age **key):
print('name:', name, 'age:', age, 'other:', kw)
>>> message('bob', 35, city='beijing')
name: bob age: 35 other:
ok,總結到這,我已經有點腦容量不夠了,關於引數還有一類是命名關鍵字引數,基於我每次看到這個介紹,就懵,需要還是直接到這裡吧 python之函式總結
目錄 1.盡量用異常來表示特殊情況,而不要返回 none 2.了解如何在閉包裡使用外圍作用域中的變數 2.1閉包相關介紹 2.2獲取閉包內的資料 nonlocal語句 3.考慮用生成器來改寫直接返回列表的函式 4.用數量可變的位置引數減少視覺雜訊 5.用關鍵字引數來表達可選的行為 6.用 none ...
python總結函式 Python函式之簡單總結
函式的定義 python的函式定義使用關鍵字def,如定義乙個返回絕對值的函式my abs1 5def my abs x if x 0 return x else return x 函式呼叫 引數錯誤 如果在呼叫函式時,傳給函式的引數增多或減少,python直譯器都會檢查出來 typeerror 提...
python之函式總結1
1.空函式 有的時候定義乙個函式,但不會處理什麼業務邏輯,可以這樣 def fun passpass可以看作是乙個佔位符,在if語句中也可以使用。2.引數型別檢查 python內建有乙個函式isinstance 可以對引數型別進行檢查 書寫格式 isinstance x,type x代表要進行型別檢...