函数及嵌套

    1.   python中函数定义方法:  
def test(x):

"The function definitions"
    x+=1
     return x        
def:定义函数的关键字

test:函数名

():内可定义形参

"":文档描述(非必要,但是强烈建议为你的函数添加描述信息)

x+=1:泛指代码块或程序处理逻辑

return:定义返回值

2。为何使用函数

  1. 代码重复过多,一个劲的copy and paste不符合高端程序员的气质
  2. 如果日后需要修改发邮件的这段代码,比如加入群发功能,那你就需要在所有用到这段代码的地方都修改一遍

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


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
复制代码

   

原文地址:https://www.cnblogs.com/hanxiaofeicf/p/7240771.html