python初学一(函数二)

八、函数中变量的作用域:

        1、全局变量与局部变量:

                      (1) 同一级的函数,可以定义相同的名字的局部变量,但是各用个的不会产生影响

                      (2)  定义在函数内部的变量拥有一个局部作用域,定义在函数外的相当于这个函数的全局作用域。局部作用域

                                 可以访问全局作用域,反之不行。

         2、局部作用域修改全局变量:

                  (1)可变数据类型:对于可变类型的全局变量来说,要在函数中修改可以不使用global声明。

                  (2)不可变数据类型:对于不可变类型的全局变量来说,要在函数中修改需要global声明。

a = 1
def func():
    global a
    a = 2
    print(a)       2
func()
print(a)           2

九、匿名函数(lambda表达式):

      1、lambda 来创建匿名函数规则

                                     lambda匿名函数的表达式规则是:lambda  行参列表: 表达式

              lambda只是一个表达式,函数体比def简单很多

              lambdaJavascript不同的是,python中匿名函数与非匿名函数需要使用不同的语法

              ●lambda的主体是一个表达式,而不是一个代码块,所以不能写太多的逻辑进去。

              ●lambda函数拥有自己的命名空间,且不能访问自有 型参列表 之外或全局命名空间里的参数。

              ●lambda定义的函数的返回值就是表达式的返回值,不需要return语句

              ●lambda表达式的主要应用场景就是赋值给变量、作为参数传入其它函数

        2、与列表解析混合实例:

                   注意:列表解析属于表达式,其得到的结果是列表,列表解析并不是函数。

list1 = [1,2,3,4,5,6,7]
func1 = lambda list:[i for i in list if i > 3]   # 赋值函数名
func1(list1)              #  没有结果 ,需要打印返回值
print(func1(list1))         #  [4, 5, 6, 7]


列表解析:
print([i for i in list if i > 3])          #  [4, 5, 6, 7]

             

十、递归函数:

          1、特性:

                     (1)递归函数一句话,自己调用自己

                     (2)递归函数一定有极限值。

                     (3)递归函数倒着来计算极限值(第一项)。

          2、实例:

                   

猜你喜欢

转载自blog.csdn.net/qq_16555103/article/details/83929128