走進Python世界(10)----函式的引數
函式的引數
定義函式的時候,我們把引數的名字和位置確定下來,函式的介面定義就完成了。對於函式的呼叫者來說,只需要知道如何傳遞正確的引數,以及函式將返回什麼樣的值就夠了,函式內部的複雜邏輯被封裝起來,呼叫者無需瞭解。
Python的函式定義非常簡單,但靈活度卻非常大。除了正常定義的必選引數外,還可以使用預設引數、可變引數和關鍵字引數,使得函式定義出來的介面,不但能處理複雜的引數,還可以簡化呼叫者的程式碼。
def sum(x,y):
sum=x+y;
return sum;
預設引數在後,否則Python的直譯器會報錯
def sum(x,y=4):
sum=x+y;
return sum;
預設引數很有用,但使用不當,也會掉坑裡。預設引數有個最大的坑
先定義一個函式,傳入一個list
def add(L=[]):
L.append('A');
return L;
輸出結果:
>>> add(L=[1,2,3])
[1, 2, 3, 'A']
>>> add()
['A']
>>> add()
['A', 'A']
>>>
預設引數是[],但是函式似乎每次都“記住了”上次添加了’A’後的list。
def add(L=None):
if L is None:
L=[];
L.append('A');
return L;
為什麼要設計str、None這樣的不變物件呢?因為不變物件一旦建立,物件內部的資料就不能修改,這樣就減少了由於修改資料導致的錯誤。此外,由於物件不變,多工環境下同時讀取物件不需要加鎖,同時讀一點問題都沒有。我們在編寫程式時,如果可以設計一個不變物件,那就儘量設計成不變物件。
可變引數
在Python函式中,還可以定義可變引數。顧名思義,可變引數就是傳入的引數個數是可變的,可以是1個、2個到任意個,還可以是0個。
請計算a2 + b2 + c2 + ……。
def calc2 (*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
定義可變引數和定義一個list或tuple引數相比,僅僅在引數前面加了一個*號。在函式內部,引數numbers接收到的是一個tuple,因此,函式程式碼完全不變。但是,呼叫該函式時,可以傳入任意個引數,包括0個引數:
>>> calc2()
0
>>>
如果已經有一個list或者tuple,要呼叫一個可變引數怎麼辦?可以這樣做:
>>> calc2(*nums)
14
>>>
*nums表示把nums這個list的所有元素作為可變引數傳進去。這種寫法相當有用,而且很常見。
關鍵字引數
可變引數允許你傳入0個或任意個引數,這些可變引數在函式呼叫時自動組裝為一個tuple。而關鍵字引數允許你傳入0個或任意個含引數名的引數,這些關鍵字引數在函式內部自動組裝為一個dict。
引數組合
相關推薦
走進Python世界(10)----函式的引數
函式的引數 定義函式的時候,我們把引數的名字和位置確定下來,函式的介面定義就完成了。對於函式的呼叫者來說,只需要知道如何傳遞正確的引數,以及函式將返回什麼樣的值就夠了,函式內部的複雜邏輯被封裝起來,呼叫者無需瞭解。 Python的函式定義非常簡單,但靈活度卻
走進Python世界(9)----函式
函式呼叫 Python內建了很多有用的函式,我們可以直接呼叫。也可以在互動式命令列通過help(abs)檢視abs函式的幫助資訊。 >>> help(abs) Help on built-in function abs in modul
走進Python世界(4)----字串
Python入門教程推薦書(點選下載) 在最新的Python 3版本中,字串是以Unicode編碼的,也就是說,Python的字串支援多語言 Python提供了ord()函式獲取字元的整數表示,chr()函式把編碼轉換為對應的字元 由於Python的字
Python基礎(10):返回函式,閉包以及裝飾器之間那些糾纏不清的關係
一:返回函式 定義:函式可以作為另一個函式的返回值。 理論來源:函式可以巢狀定義。 def fun1(li): def fun2(): return sum(li) return fun2 呼叫fun1函式,返回的是一個一個fun2例項。
Python基礎(10)分解質因數
pen [] 基礎 app 分解質因數 pytho 分解 bsp python import mathsu=[]for i in range(100,1000): a=i/100 b=(i-100*a)/10 #b=i/10%10 c=i-100
python基礎(10)--模塊
年月日 時間 mda 過程 完成 字符串格式化 etime 日期 模塊介紹 1.模塊介紹 模塊,用一坨代碼實現了某個功能的代碼集合 類似於函數式編程和面向過程編程,函數式編程則完成一個功能,其他代碼用來調用即可,提供了代碼的重用性和代碼間的耦合。而對於一個復雜的功能來說,可
python學習(六)函式
實現特定功能的一坨程式碼,為了提高程式碼的複用性;用def定義,必須呼叫才會執行 入參的時候為形參(變數);呼叫時傳的為實參;在函式裡定義的變數為區域性變數,只能在函式中使用;return 返回值 函式中幾種引數:位置引數、預設值引數、可變引數(*args)、關鍵字引
《零基礎入門學習Python》(10)--列表:一個打了激素的陣列(一)
前言 有時候我們需要把一些東西暫時儲存起來,因為他們有著一些直接或間接的聯絡,我們需要把它們放在某個組或者集合中,未來可能用得上。 很多接觸過程式設計的朋友都知道,都接觸過陣列這個概念,那麼陣列這個概念事實上很簡單,把一大堆同總型別資料挨個擺在一塊,然後通過陣列的下標進行索
《零基礎入門學習Python》(19)--函式:我的地盤聽我的
前言 接下來仔細講講函式與過程和區域性變數和全域性變數的作用範圍 知識點 函式與過程 在許多程式語言中,函式(function)是有返回值的,過程(procedure)是簡單、特殊並且沒有返回值的。而在Python中,嚴格來說只有函式沒有過程。 例如:
《零基礎入門學習Python》(18)--函式:靈活即強大
前言 上一節課我們基本介紹Python函式的用法,這一節課我們主要針對函式的引數進行進一步的深入學習。 知識點 形參(parameter)和實參(argument) >>> def MyFirstFunction(name): '函式定義過程中的n
《零基礎入門學習Python》(17)--函式:Python的樂高積木
前言 小甲魚的話——相信大家小時候都玩過神奇的樂高積木, 只要通過想象力和創造力我們可以拼湊很多神奇的東西,那麼隨著我們學習的深入,我們編寫的Python程式碼也將日益增加,並且也越來越複雜, 所以呢,我們需要找尋一種方法,對這些複雜的方法進行重新的組織,目的就是為了使程式碼的邏輯更
《零基礎入門學習Python》(22)--函式:遞迴是神馬
前言 普通程式設計師用迭代,天才程式設計師用遞迴 知識點 遞迴是神馬? 遞迴是屬於演算法的範疇。 遞迴就是函式呼叫自身的一種行為。 >>> def g(): return g() >>> g()
《零基礎入門學習Python》(21)--函式:lambda表示式(內建BIF filte()和map())
前言 接下來學習怎麼建立匿名函式 知識點 lambda 表示式 Python 允許使用lambda關鍵字建立匿名函式 lambda 函式怎麼使用? 單個引數 >>> def add(x): retur
《零基礎入門學習Python》(20)--函式:內嵌函式和閉包
前言 之前我們講了函式的一些相關知識,瞭解了什麼是全域性變數什麼是區域性變數,接下來我們看看怎麼將區域性變數變為全域性變數。還要將將內嵌函式的相關概念 知識點 global關鍵字 使用global關鍵字,可以修改全域性變數: >>> count
Python3函式介紹(一)——函式引數
1.引數型別 ①位置引數 def hello_1(greeting,name): print(’%s,%s’%(greeting,name)) hello_1(‘Hi’,‘John’) Hi,John ②關鍵字引數 ③預設引數
Python學習(10)——常用的內建模組
跳過程序執行緒 跳過正則 1、datetime:處理日期和時間的標準庫 https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431937554888869fb52
Python學習(2)——函式
1、函式的引數 (1)要注意定義可變引數和關鍵字引數的語法: *args是可變引數,args接收的是一個tuple; **kw是關鍵字引數,kw接收的是一個dict。 (2)呼叫函式時如何傳入可變引數和關鍵字引數的語法: 可變引數既可以直接傳入:func(1, 2, 3),又
Python入門(九)函式與模組
Python 函式 定義一個函式 你可以定義一個由自己想要功能的函式,以下是簡單的規則: 函式程式碼塊以 def 關鍵詞開頭,後接函式識別符號名稱和圓括號()。 任何傳入引數和自變數必須放在圓括號中間。圓括號之間可以用於定義引數。 函式的第一行語句可以選擇性地使
重拾Python學習(二)----------函式
函式定義 def function: return pass 函式可以同時返回多個值,但其實就是一個tuple。 函式引數 位置引數 def power(x, n) 預設引數 def po
《笨辦法學Python》(13)---函式概念:迴圈VS遞迴,尾遞迴
參考文件 http://www.cnblogs.com/liunnis/articles/4604967.html https://blog.csdn.net/tianpingxian/article/details/80821504 https://blog.csdn.net/tc