函数及嵌套
1. python中函数定义方法:
def test(x):
"The function definitions"
x+=1
return x
def:定义函数的关键字
test:函数名
():内可定义形参
"":文档描述(非必要,但是强烈建议为你的函数添加描述信息)
x+=1:泛指代码块或程序处理逻辑
return:定义返回值
2。为何使用函数
- 代码重复过多,一个劲的copy and paste不符合高端程序员的气质
- 如果日后需要修改发邮件的这段代码,比如加入群发功能,那你就需要在所有用到这段代码的地方都修改一遍
3.使用过程
3.1return
返回值数=0:返回None
返回值数=1:返回object
返回值数>1:返回tuple
3.2参数
1.参数的分别:实参(实际的要交给函数的内容)和形参(定义函数的时候它只是一个形式,只是一个变量的名)
2.参数可以传递多个,多个参数之间用逗号分割。
3.位置参数
站在实参角度:1.按照位置传值2.按照关键字传值3.位置、关键字形式混着用
站在形参角度:位置参数必须传值
4.动态参数 :*args **kwargs
5.注意参数混合用的顺序
位置参数>*args>默认参数>**kwargs
4.局部变量和全局变量
在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
当全局变量与局部变量同名时:
在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
5.嵌套函数和作用域
Python语言允许在定义函数的时候,其函数体内又包含另外一个函数的完整定义,这就是我们通常所说的嵌套定义
经典列子:
def foo(): #定义函数foo(), m=3 #定义变量m=3; def bar(): #在foo内定义函数bar() n=4 #定义局部变量n=4 print m+n #m相当于函数bar()的全局变量 bar() #foo()函数内调用函数bar()
闭包函数
定义:
python中的闭包从表现形式上定义(解释)为:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包。
使用闭包注意事项:
1,闭包中是不能修改外部作用域的局部变量的
def foo(): ... m = 0 ... def foo1(): ... m = 1 ... print m ... ... print m ... foo1() ... print m ... >>> foo() 0 1 0
从执行结果可以看出,虽然在闭包里面也定义了一个变量m,但是其不会改变外部函数中的局部变量m