局部变量和全局变量

一、基础
在子程序中定义的变量称为局部变量,在程序一开始定义的变量称为全局变量。

1:
name = "qwer"
def change_name() :
    name = "asd"
    print('change_name',name)
change_name()
print(name)
输出结果:
change_name asd
qwer

同样是输出name,为什么两个不一样呢?这是因为函数里面的name是局部变量,开始定义的name是全局变量,局部变量只在函数里面生效,最后一行输出的name输出的是全局变量
下面我们用一张图来表明全局变量和局部变量两者之间的关系:
全局变量和局部变量关系
由上图我们可以看出,局部变量存在私密空间内;而全局变量则是所有人都可以拿到的东西。
要是我们想把局部变量变为全局变量,或者在函数内直接影响到全局变量,我们可以使用golbal质量

name = "qwer"
def change_name() :
    golbal name = "asd"
    print('change_name',name)
change_name()
print(name)
输出结果:
change_name asd
asd

由上面的例子我们可以得出,如果函数的内容无golbal关键字,我们只能读取全局变量,无法重新赋值
如果函数中有golbal关键字,变量本质上就是全局的那个变量,可读取可赋值
为了方便区分,全局变量可用大写,局部变量可用小写
二、判断运行顺序
通过全局变量和局部变量的学习,可以用这些判断函数运行顺序

1NAME = "ZF"
def shunxu1() :
    name = "zhaoyun"
    print(name)
    def shunxu2():
      name = "zhangfei"
      print(name)
      def shunxu3():
        name ="liubei"
        print(name)
        def shunxu4():
          name = "lvbu"
          print(name)
        shunxu4()
        print(name)
      shunxu3()
      print(name)
    shunxu2()
    print(name)
shunxu1()
输出结果:
zhaoyun
zhangfei
liubei
lvbu
liubei
zhangfei
zhaoyun

为上面的函数运行顺序标号,1、2、3…,结果如下:
NAME = “ZF” 1
def shunxu1() :
name = “zhaoyun” 3
print(name) 4
def shunxu2():
name = “zhangfei” 6
print(name) 7
def shunxu3():
name =“liubei” 9
print(name) 10
def shunxu4():
name = “lvbu” 12
print(name) 13
shunxu4() 11
print(name) 12
shunxu3() 8
print(name) 13
shunxu2() 5
print(name) 14
shunxu1() 2
里面每个name是哪个,请读者自行体会
三、风湿理论之函数即变量

1:def foo():
        print('from foo')
     bar()

报错,原因:bar函数未定义

2:def foo():
        print('from foo')
        bar()
    def bar():
        print('from bar')
输入:foo()
结果:from foo
      from bar
3: def bar():
        print('from bar')
     def foo():
        print('from foo')
         bar()
输入:foo()
结果:from foo
      from bar
4: def foo():
        print('from foo')
     bar()
     def bar():
        print('from bar')     
输入:foo()

报错,在foo函数运行时,bar函数未进行定义,或者说,在foo函数运行时,bar函数在内存中没有加载好
当我们运行一个函数时,内存是如何处理的呢?,下面我用一张图说明这个问题
风湿理论
风湿理论之函数即变量:类似函数的赋值操作,把这个函数里面所有的代码都当成普通的字符串,放入内存中

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值