函数的作用域

一,作用域

    a = 1

    def add(y,z):

            print y+z+a

            return

    1,全局变量

        a因为全局变量是在文件最外层注册的变量名,所以是全局变量,他能够在函数内部进行‘引用’,而不需要特定的声明

        为全局变量

        全局变量的生命周期在这个程序运行期间,在整个脚本中作用

    2,局部变量(本地变量)

        y和z的注册地址在函数内部,y和z是局部变量

        局部变量生命周期在函数运行期间,只在局部的区域作用

    例子:

        

        外部的a并没有被修改,这是因为,赋值的变量名除非声明为全局变量,否则均为本地变量,这里的a=2,

        因为是在函数内部使用赋值的,所以python的解释器会把它当作一个函数内部的变量,他的作用域使这个函数的内部

        如果想要修改一个全局变量,只需子啊函数内部被修改变量前加global语句:

        eg:

                

二,函数的传参需要注意的地方

            函数参数传递当接到一个可变对象(如列表,字典,集合)是,我们可以直接修改初始对象的数据值,这就是传引用

        不可变对象传递时,我们无法直接修改初始数据对象的值,也叫按值传递

        1,传递一个不可变对象(按值传递字符串,元组等):

            eg::

                

            这个不会改变实参的值(a)


            2,传递一个可变的对象(按引用传递)

                eg:

                                              

                        这个会改变实参的值,因为这里隐含了一个浅拷贝的操作    

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值