Python函數
函數是python程序的重要組成部分。所謂函數就是實現某一特定功能的代碼段,可重複使用,提高了代碼的利用率。
python除了可以直接使用內置函數,還支持自定義函數。
定義函數
使用 def
關鍵字,格式如下:
def函數名(參數列表):
函數體
函數的返回值
函數的返回值用return
語句返回,函數體內部的語句在執行時,一旦執行到return
時,函數就執行完畢,並將結果返回。
如果沒有返回值,函數執行完畢後也會返回結果,只是結果爲None。
函數參數詳解
1.位置參數:
調用的時候必須傳值,有幾個就按順序傳幾個值
示例
def area(length, width):
return 2 * (length + width)
# 調用函數時,必須傳遞2個參數,否則會引發錯誤
print(area(10,3))
2.默認參數:
定義時給出默認值,調用的時候可以不傳參,使用默認值
默認參數好處是:如果一個函數有20多個參數,如果使用默認參數,在調用的時候只需要傳遞某些參數(注意傳參數名)就可以了。
示例
def student(name,age=10,city="Beijing"):
print("姓名:{},年齡:{},城市:{}".format(name,age,city))
#調用方式一:
student("趙四")
#調用方式二:
student("張三",15,"Shanghai")
#調用方式三:
student("李明",12)
#調用方式四:
student("李明",city="Tianjin")
1.既有位置參數又有默認參數,位置參數在前,默認參數在後。
2.多個默認參數時,調用的時候,既可以按順序提供默認參數,也可以不按順序提供部分默認參數。 當不按順序提供部分默認參數時,需要傳入參數名(見調用方式四)。
3.可變參數:
可以傳入任意個參數,傳入的參數被組裝爲一個tuple。
示例
def sum(*num):
sum=0
for i in num:
sum=sum+i
return sum
#調用方式一:
sum(1,2,3)
# 調用方式二:
num = [1,2,3]
sum(*num)
4.關鍵字參數:
傳入任意個含參數名的參數,這些關鍵字參數被組裝爲一個dict。
示例
def person(**kw):
for key in kw:
print("{}:{}".format(key,kw[key]))
# 調用方式一:
person(name="John",age=15)
# 調用方式二:
p={"name":"Alice","city":"Beijing"}
person(**p)
5.命名關鍵字參數:
對於關鍵字參數,函數調用的時候可以傳入任意個不受參數名限制的關鍵字參數。但如果想必須傳入某個名字的關鍵字參數,就可以用命名關鍵字參數。如上例中的person()函數,如果必須傳入名爲age的關鍵字參數,可以寫成如下形式:
def person(name, *, age):
print("name={},age={}".format(name,age))
# 調用方式:
person("John", age=15)
命名關鍵字參數又和位置參數不同,命名關鍵字參數必須傳入參數名。如果沒有傳入參數名,調用將報錯。如果上面例子的調用方式寫成 person("John", 15) 將報錯
如果既有可變參數,又有命名關鍵字參數,參數順序爲:可變參數,命名關鍵字參數,並且命名關鍵字參數前不需*
def person(name, *args, age):
print(name,args,age)
python中五種參數可以組合使用,參數的定義順序必須是:位置參數、默認參數、可變參數、命名關鍵字參數和關鍵字參數。
變量的作用域
局部變量
局部變量:在函數中定義的變量,只在函數內部起作用。
如果想讓局部變量在函數外起作用,要聲明爲全局變量,需要使用global關鍵字來聲明。
全局變量
全局變量:在模塊層次中定義的變量,作用範圍在整個模塊。
1.全局變量的作用範圍僅限於單個模塊文件內。
2.如果函數內定義的局部變量和全局變量同名,函數在使用該變量的時候會優先使用局部變量。
示例
先定義一個全局變量,由於函數內部沒有定義同名變量,所以調用的時候使用的是全局變量的值
var=123 #全局變量
def func():
print(var)
# 調用函數
func() #123
現在在函數內部定義一個同名變量,可以看到函數在調用的時候優先使用的是自己內部的變量,而在函數外部使用的是全局變量的值
var=123#全局變量
def func():
var=45#局部變量
print(var)
# 調用函數
func() #45
print(var) #123
現在我們把函數內的變量聲明爲全局變量,可以看到變量var在函數外部也起作用了
def func():
global var
var=45#局部變量
print(var)
# 調用函數
func() #45
print(var) #45
Python基礎篇目錄