函数用来打包代码,打包的好处是最大程度减少冗余,还可以将不同功能的代码进行封装,分解,降低代码复杂度,增加可读性。
1.创建和调用函数
用def来定义,创建函数,调用时使用函数名()就可以直接调用:
2.函数的参数
使用函数的参数来实现功能的定制,
其中,name和times是形参,c++,5则是实参。
函数的返回值
位置参数
默认参数
默认参数放在后面
作用域
作用域分为局部作用域和全局作用域,如下列,x就是局部变量,而y则是全局变量。
全局变量可以在函数的内部被访问到,但是无法在函数中修改他的值。也就是说如果局部变量和全局变量重名(假设都为x),在函数中会优先使用局部变量的值,也可以说是局部变量x的值覆盖了全局变量的x的值,但是他们不在同一个地址,他们仍是不同的两个东西。
global语句
global可以用来在直接在函数中修改全局变量,不需要弄出局部变量来覆盖,
而且,这个全局变量的值在内外都被改变了,不推荐使用。
嵌套函数
nonlocal语句
可以在内部修改外部函数的变量值,
legb规则
不要起和内置函数相同的变量名!!!!!
装饰器
其中这个@就是起到了装饰器的作用
lambda函数 一行流
生成器yield
可以让函数在退出之后还能保留原来的状态
它不支持下表索引的方法
递归
要让递归正常工作,必须要有一个结束的条件,并且每次调用都会向着这个结束条件去推进,
要实现一个数的阶乘,有迭代和递归两种方法: