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()