首页 > 编程语言 > 详细

我的python菜鸟之路8

时间:2020-06-26 09:46:58      阅读:75      评论:0      收藏:0      [点我收藏+]

----------------------------------作用域-----------------------------------------

  • 一个函数是一个作用域

  • 作用域内部数据独享,制造作用域之间的数据隔离,但是可以利用全局的数据(上下均可)>>>父级>>父级>>.....>>全局,全局没有便报错

  • 全局不能利用作用域的数据

    a = 1
    def funs():
        x = 666
        print(x)
        print(a)
        print(b)
    b = 2
    s = funs()
    #此时函数也可以利用b的值
    a = 1
    def funs():
        x = 666
        print(x)
        print(a)
        print(b)
    s = funs()
    b = 2
    #此时便不可以利用b的值
    
  • 函数内部可以调用函数,前提是被调用的函数在全局中被定义(函数中再嵌套函数则不可以)

  • def funs():
        x = 666
        print(x)
        def fun():
            print(555)
        print(999)
        fun()
    funs()
    #结果为
    666
    999
    555
    
  • 子作用域只能找到全局的数据,不能重新赋值

  • 但列表、集合、字典可被修改类的类型,能被子作用域在全局修改

    name=[1,2,3,4]
    def funs():
        name.append(55)
        print(name)
    funs()
    print(name)
    
  • 如果非要在子作用域对全局进行赋值可选用global语句(只用于全局)

  • name=‘杨子列‘
    def funs():
        global name
        name = ‘扬子鳄‘
    funs()
    print(name)
    
  • nonlocal,修改上一层的父级

  • ame=‘杨子列‘
    def funs():
        name = ‘扬子鳄‘
        def fun():
            nonlocal name
            name = ‘yangziq‘
            print(name)
        fun()
    funs()
    print(name)
    #结果为
    yangziq
    杨子列
    

    补充

    • 全局变量必须是大写(一个程序员的修养)

我的python菜鸟之路8

原文:https://www.cnblogs.com/yangzilaing/p/13193692.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!