Python函數詳解一(函數參數、變量作用域)


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基礎篇目錄

Python基礎之數據類型詳解

Python之pip使用詳解|附第三方庫安裝總結

Python編程之Pycharm快速學習

你熟悉Python的代碼規範嗎?如何一鍵實現代碼排版

快速入門 Python 數據庫操作

Python模塊知識全解析

快速入門Python文件操作

Python字符串操作大全

關於Python循環,看這一篇就夠了

關於Python異常處理,你需要了解的知識點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章