我們知道,在呼叫函式時,如果不指定某個引數,直譯器會丟擲異常。為了解決這個問題,python 允許為引數設定預設值,即在定義函式時,直接給形式引數指定乙個預設值,這樣的話,即便呼叫函式時沒有給擁有預設值的形參傳遞引數,該引數可以直接使用定義函式時設定的預設值。
定義帶有預設值引數的函式,其語法格式如下:
def 函式名(...,形參名=預設值):
**塊
注意,在使用此格式定義函式時,指定有預設值的形式引數必須在所有沒預設值引數的最後,否則會產生語法錯誤。
例如,如下程式為 name、message 形參指定了預設值:
# 為兩個引數指定預設值
def say_hi(name = "孫悟空", message = "歡迎來到c語言中文網"):
print(name, ", 您好")
print("訊息是:", message)
# 全部使用預設引數
say_hi()
# 只有message引數使用預設值
say_hi("白骨精")
# 兩個引數都不使用預設值
say_hi("白骨精", "歡迎學習python")
# 只有name引數使用預設值
say_hi(message = "歡迎學習python")
執行結果為:
孫悟空 , 您好
白骨精 , 您好
白骨精 , 您好
孫悟空 , 您好
從上面程式可以看出,如果只傳入乙個位置引數,由於該引數位於第一位,系統會將該引數值傳給 name 引數。因此,不能按如下方式呼叫 say_hi() 函式:
say_hi("歡迎學習python")
say_hi(name="白骨精", "歡迎學習python")
因為 python 規定,關鍵字引數必須位於位置引數的後面。因此提示錯誤:positional argument follows keyword argument。
那麼,能不能單純地將上面兩個引數交換位置呢?
say_hi("歡迎學習python" , name="白骨精")
上面呼叫依然是錯誤的,因為第乙個字串沒有指定關鍵字引數,因此將使用位置引數為 name 引數傳入引數值,第二個引數使用關鍵字引數的形式再次為 name 引數傳入引數值,這意味著兩個引數值其實都會傳給 name 引數,程式為 name 引數傳入了多個引數值。因此提示錯誤:say_hi() got multiple values for argument 'name'。
將函式呼叫改為如下兩種形式是正確的:
say_hi("白骨精", message="歡迎學習python")
say_hi(name="白骨精", message="歡迎學習python")
上面第一行**先使用位置引數為 name 引數傳入引數值,再使用關鍵字引數為 message 引數傳入引數值;第二行**中的 name、message 引數都使用關鍵字引數傳入引數值。
再次強調,由於 python 要求在呼叫函式時關鍵字引數必須位於位置引數的後面,因此在定義函式時指定了預設值的引數(關鍵字引數)必須在沒有預設值的引數之後。例如如下**:
def print********(char, heigth=5):
for i in range(1, heigth + 1):
for j in range(heigth - 1):
print(" ", end="")
for j in range(2 * i - 1):
print(char, end="")
print()
print********("@", 6)
print********(char="*")
上面程式定義了 print********() 函式,其中,有預設值的 height 形參,必須放在 char 形參的後面;反之,將會造成語法錯誤。
在 python 中,可以使用「函式名.__defaults__」檢視函式的預設值引數的當前值,其返回值是乙個元組。例如,顯示上面定義的 print******** 函式的預設值引數的當前值,可以使用 print********.__defaults__ ,其結果為 (5,)。
ParseInt函式引數設定
我們經常用parseint函式轉換字串為int數值,parseint函式有兩個引數可以設定,其中第二個引數可以預設。parseint 字串 使用的進製 var num1 parseint 10 2 2 var num1 parseint 10 8 8 var num1 parseint 10 10 ...
引數設定 pandas引數設定小技巧
python大資料分析記錄 分享 成長 在日常使用pandas的過程中,由於我們所分析的資料表規模 格式上的差異,使得同樣的函式或方法作用在不同資料上的效果存在差異。而pandas有著自己的一套 引數設定系統 可以幫助我們在遇到不同的資料時靈活調節從而達到最好的效果,本文就將介紹pandas中常用的...
plotyy函式 plotyy函式引數設定
ax,h1,h2 plotyy x,a,x,sig0 set ax,xlim 7.4,8.4 xminorgrid on 設定x軸範圍,並顯示更細密的網格 set h1,color k linewidth 1 設定y1的顏色為黑色,線寬為1 set h2,color r linewidth 1 設定...