Python——函數的參數
函數的參數分為:
1. 必須參數
2. 關鍵字參數
3. 默認參數
必須參數
最基本的特性是,我們在函數的參數列表裏面定義的參數是必須要傳遞的。
def add(x,y): result = x +y return result
我們在調用這個函數的時候,必須要給x和y分表要進行賦值,如果兩個都不賦值或者只給一個賦值,是會報錯的。
我們在定義這個函數的時候,在這個參數列表裏面給了x y,我們可以叫x 和 y 叫做形式參數,簡稱 形參 。
有形式參數,相對應的就有實際參數,簡稱 實參。
實際參數是指在調用函數的過程中,我們往函數參數列表裏面傳遞的實際的取值。
關鍵字參數
我們拿上一個函數來舉例
def add(x,y): result = x +y return result
必須參數在調用的時候是講究一個順序的,第一個傳入的實參是x的值,第二個傳入的是y的值
那如果我們要第一個傳入的是y值,第二個傳入的是x值該如何去實現呢
關鍵字參數可以不用考慮函數參數的順序,可以任意指定參數的順序從而實現參數的調用
c = add(y = 5,x = 2)
這樣就能先給y賦值了。當然,如果賦值一個參數還是不行的,有多少形參,就要有多少個實參。
默認參數
如果我們需要函數的參數列表很長,而我們又需要多次使用這個函數,有很多的參數會重復輸入,那我們就可以給這個函數設置一個默認值
def print_student_files(name,gender,age): print(‘我叫‘ + name) print(‘我今年‘ + str(age) + ‘歲‘) print(‘我是‘+ gender + ‘生‘)
這是一個記錄學生姓名你、年齡、性別的函數(註意,第三行的age要轉換成字符串,因為字符串不能和int類型相加)
>>> print_student_files(‘安妮‘,‘女‘,18) 我叫安妮 我今年18歲 我是女生
如果有30個同學,大多數都是18歲的女生。那麽我們可以用到默認參數:
def print_student_files(name,gender=‘女‘,age=18): print(‘我叫‘ + name) print(‘我今年‘ + str(age) + ‘歲‘) print(‘我是‘+ gender + ‘生‘)
這樣,我們只需要輸入名字就可以了
>>> print_student_files(‘曼妮‘) 我叫曼妮 我今年18歲 我是女生
如果有個同學年齡和性別和設置的默認值不一樣,則需要傳遞對應參數:
>>> print_student_files(‘約翰‘,‘男‘,19) 我叫約翰 我今年19歲 我是男生
總結一下默認參數的規則:
在定義的時候,如果你想讓某個參數擁有默認值,那麽久在形參的後面加上一個‘=‘,並且把默認值賦給這個形參
如果你沒有給某個形參設置默認值,那麽你一定要傳遞給一個實參。
易錯點:
必須參數加上默認參數,後面再加一個必須參數
錯誤實例1:
def print_student_files(name,gender=‘女‘,age): print(‘我叫‘ + name) print(‘我今年‘ + str(age) + ‘歲‘) print(‘我是‘+ gender + ‘生‘)
SyntaxError: non-default argument follows default argument
報錯:不能把非默認參數放在默認參數之後
錯誤實例2:
我們要更改第二個默認參數(年齡),第一個默認參數(性別不變)
假設我們把每個參數都轉換成字符串
>>> def print_student_files(name,gender=‘女‘,age=18): print(‘我叫‘ + str(name)) print(‘我今年‘ + str(age) + ‘歲‘) print(‘我是‘+ str(gender) + ‘生‘) >>> print_student_files(‘安妮‘,17) 我叫安妮 我今年18歲 我是17生
解決方法:
我們把年齡17當做性別傳入進了性別的參數裏。解決方法是運用關鍵參數
>>> print_student_files(‘安妮‘,age = 17) 我叫安妮 我今年17歲 我是女生
錯誤實例3:
把默認參數和必須參數混著一起調用:
>>> print_student_files(‘安妮‘,gender=‘女‘,17) SyntaxError: positional argument follows keyword argument
Python——函數的參數