python之函式總結2

2021-07-12 05:02:59 字數 2791 閱讀 9948

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代表要進行型別檢...