自學Python教程【第六十五節(jié)】函數(shù)的參數(shù)傳遞(1)
同學們,歡迎大家來到自學Python教程教室,上一講我們分享了 Python 里一個我非常喜歡的特性--列表綜合(List Comprehension)。所謂列表綜合,就是通過一個已有的列表生成一個新的列表的相關知識,這節(jié)我們向大家分享函數(shù)的參數(shù)傳遞的相關內(nèi)容。與以往不同的是本篇我們面向有一點點 Python 基礎的讀者,零基礎的看不懂也沒關系,慢慢來!
本節(jié)課關鍵字:Python函數(shù),參數(shù),默認值
先說下上次課最后留的那題,我自己的解法:
print ';'.join([str(i) for i in range(1,101) if i % 2 == 0 and i % 3 == 0 and i % 5 == 0])
另外,關于上次說的 List Comprehension,我在文中稱之為“列表綜合”,這是引自《簡明 Python 教程》的翻譯。也有同學表示叫做“列表解析”或“列表表達式”。都是一個意思,其實在寫這課之前,我從來都不去“叫”它,只知道這么用而已。
我們曾經(jīng)講過 Python 中函數(shù)的參數(shù)傳遞(見第19課)。最基本的方式是:
定義
def func(arg1, arg2):
print arg1, arg2
調用
func(3, 7)
我們把函數(shù)定義時的參數(shù)名(arg1、arg2)稱為形參,調用時提供的參數(shù)(3、7)稱為實參。
這種方式是根據(jù)調用時提供參數(shù)的位置進行匹配,要求實參與行參的數(shù)量相等,默認按位置匹配參數(shù)。調用時,少參數(shù)或者多參數(shù)都會引起錯誤。這是最常用的一種函數(shù)定義方式。
在調用時,也可以根據(jù)形參的名稱指定實參。如:
func(arg2=3, arg1=7)
但同樣,必須提供所有的參數(shù)。看看和func(3, 7)的運行結果有什么不同。
Python 語言還提供了其他一些更靈活的參數(shù)傳遞方式,如:
func2(a=1, b=2, c=3)
func3(*args)
func4(**kargs)
今天我們先說說func2這種方式。
這種方式可以理解為,在一般函數(shù)定義的基礎上,增加了參數(shù)的默認值。這樣定義的函數(shù)可以和原來一樣使用,而當你沒有提供足夠的參數(shù)時,會用默認值作為參數(shù)的值。
例如:
定義
def func(arg1=1, arg2=2, arg3=3):
print arg1, arg2, arg3
調用
func(2, 3, 4)
func(5, 6)
func(7)
輸出為
2 3 4
5 6 3
7 2 3
提供的參數(shù)會按順序先匹配前面位置的參數(shù),后面未匹配到的參數(shù)使用默認值。
也可以指定其中的部分參數(shù),如:
func(arg2=8)
func(arg3=9, arg1=10)
輸出為
1 8 3
10 2 9
或者混合起來用:
func(11, arg3=12)
輸出為
11 2 12
但要注意,沒有指定參數(shù)名的參數(shù)必須在所有指定參數(shù)名的參數(shù)前面,且參數(shù)不能重復。以下的調用都是錯誤的:
func(arg1=13, 14)
func(15, arg1=16)
定義參數(shù)默認值的函數(shù)可以在調用時更加簡潔。大量 Python 模塊中的方法都運用了這一方式,讓使用者在調用時可以提供盡可能少的參數(shù)。
接下來的幾次課,我會繼續(xù)介紹其他的參數(shù)傳遞方式。
恭喜您在Python自學的道路上又堅持了一天,今天我們開始了Python中函數(shù)的參數(shù)傳遞(1),下節(jié)課我們將分享更多Python中函數(shù)的參數(shù)傳遞的相關內(nèi)容,敬請關注 !
好啦,今天的分享到這里就結束了,希望大家能夠持續(xù)關注馬哥教育官網(wǎng),每天都會有大量的優(yōu)質內(nèi)容與大家分享!
聲明:文章來源于網(wǎng)絡,侵刪!