019and020、函数作用域、内嵌函数和闭包

1、函数与过程

函数function:带有返回值

过程procedure:简单、特殊的,没有返回值

Python中只有函数、没有过程

2、返回值

Python是在赋值时确定变量的类型。

Python可以返回多个值【利用列表和元组】

3、变量的作用域

局部变量:函数内的变量为局部变量,只能在本函数内起作用

全局变量:全局变量一定要小心,不能轻易的赋值

在函数中尝试给全局变量赋值时会自动创建一个同名的几部变量!但可以在函数内部访问其值。

     全局变量危害:http://bbs.fishc.com/forum.php?mod=viewthread&tid=42573&extra=page%3D1&page=1

 

4、global关键字

     函数内部访问全局就好,不要试图修改它(Python会自动创建一个同名的局部变量)。【迫不得已要修改时,需要先用global申明】

5、内嵌函数【函数内部定义函数,也叫内部函数】

def fun1():

    print('fun1()在调用')

    def fun2():

        print('fun2()在使用')

    fun2()

注意:fun2()只能在fun()中调用!

6、闭包【函数式编程的重要结构】

     如果在一个内部函数对在内部函数之外的作用域的变量进行引用(这里排除对全局变量的引用,通常是引用外部函数),那么这个内部函数就被认为是一个闭包。

例:

def funx(x):

    def funy(y):

          return x*y

     return funy

调用时的方式:

1.     funx(3)(4)         .......相当于x=3,y=4

2.     i=funx(3)          .......相当于先返回了funy的地址

        i(4)

7、nonlocal关键字

def fun1():
     x = 5
     def fun2():
nonlocal x *= x                        …………..加上关键字nonlocal后就不会报错
          return x
     return fun2()

转载于:https://my.oschina.net/u/2321525/blog/391992

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值