0) 能夠下降代碼量(調用函數只須要一行,而拷貝黏貼須要N倍代碼)
1) 能夠下降維護成本(函數只需修改def部份內容,而拷貝黏貼則須要每一處出現的地方都做修改)
2) 使序更容易閱讀(沒有人會但願看到一個程序重複一萬行「I love you」)安全
使用「def」關鍵字,要注意函數名後邊要加上小括號「()」,而後小括號後邊是冒號「:」,而後縮進部分均屬於函數體的內容,例如:函數
1. def MyFun():spa
2. # 我是函數體對象
3. # 我也是函數體變量
4. # 咱們都屬於函數MyFun()程序
5. 命名
6. # 噢,我不屬於MyFun()函數的了安全性
若是你有一些有許多參數的函數,您想要指定參數中的一些,那麼,你能夠經過爲參數命名來爲它們賦值——這叫作參數關鍵字——咱們使用名稱(關鍵字)而不是位置(咱們一直使用的)來指定函數的參數。工作
這有兩個優點,一是,使用函數容易,由於咱們不須要擔憂參數的順序。二是,若是其餘參數有默認參數值,咱們能夠只給咱們想賦值的參數賦值。閱讀
1. def func(a, b=5, c=10):
2. print('a爲', a, '和b爲', b, '和c爲', c)
3.
4. func(3, 7)
5. func(25, c=24)
6. func(c=50, a=100)
輸出:
a爲3 和b爲7 和c爲10
a爲25 和b爲5 和c爲24
a爲100 和b爲5 和c爲50
它是如何工做的:
名爲func的函數中有一個參數沒有默認參數值,後面兩個參數有默認參數值。
第一次使用func(3, 7),參數a獲得值3,參數b獲得值7,參數c獲得默認值10。
第二次使用func(25, c=24),參數a按照參數的位置獲得值25,而後參數c按照參數名,也就是參數關鍵字,獲得值24,變量b獲得默認值5。
第三次使用func(c=50, a=100),咱們爲全部給定的值使用了參數關鍵字。注意,咱們爲參數c指定值是在參數a以前,儘管在函數定義中a在c前。
若是沒有使用return語句指定返回值,Python也不是什麼都不返回,ta會返回一個none對象,因此咱們說Python全部的函數都有返回值
默認用逗號隔開,是一元組的形式返回。也能夠用列表包含起來返回。
不到萬不得已不要使用全局變量
1.代碼可讀性變差。
2.代碼安全性下降。
但願在函數中修改全局變量的值時使用global修飾該變量。
在嵌套函數中,若是但願在內部函數改變外部海曙的局部變量,用nonlocal修飾該變量
def funout():
def funin():
Print(‘你成功訪問到了in’)
return funin()
這時想訪問funin()直接調用funout()便可
def funout():
def funin():
Print(‘你成功訪問到了in’)
return funin
這時想訪問funin(),須要funout()()才能夠訪問。
也能夠「曲線救國」
go = funout()
go()