zoukankan      html  css  js  c++  java
  • 函数第三部分:局部变量和全局变量-Python基础前传(12)

    局部变量

    • 什么是局部变量

      • 局部变量是只能在函数里面用,出去就不能用了,请看下面的例子:
    def func1():
    	a = 123
    	print(a)
    
    • 这里的变量a就是局部变量,这个局部变量只能在当前的函数体里来用,在其他的地方就用不了了;正因为它是局部变量,所以下面的代码一定是没有输出结果的:
    def func1():
    	a = 123
    	print(a)
    	
    print(a)
    

    什么是全局变量

    • 下面例子中的p就叫做全局变量,请大家体会一下:
    p = "zhuyuanlu"
    
    def func1():
    	a = 123
    	print(p)
    	print(a)
    func1()
    >>> zhuyuanlu
    >>> 123
    

    前面我们看到,全局变量是可以在函数体里调用的,那问题来了,我们能不能在函数体里修改全局变量吗?

    p = "zhuyuanlu"
    
    def func1():
    	a = 123
    	p = "jacky"
    	print(a)
    
    def func2():
    	a = 456
    	print(p)
    	print(a)
    
    func1()
    func2()
    >>> 123
    >>> zhuyuanlu
    >>> 456
    
    • 上面的代码案例说明:我们是不能再局部变量里修改全局变量的,那我们如果一定要修改,就加上我们的关键字global
    p = "zhuyuanlu"
    
    def func1():
    	a = 123
    	global p
    	p = "jacky"
    	print(a)
    
    def func2():
    	a = 456
    	print(p)
    	print(a)
    
    func1()
    func2()
    >>> 123
    >>> jacky
    >>> 456
    

    关于全局变量的书写规范

    • 全局变量都大写,局部变量都小写

    • 这样的规范写法,以后看你代码的人就都能看懂

    关于理解局部变量和全局变量的一些底层原理

    • 在函数里边定义的参数以及变量,都称为局部变量,除了这个函数,这些变量都是无效的。事实上的原理是,Python在运行函数的时候,利用栈(Stack)进行存储,当执行完该函数后,函数中的所有数据都会被自动删除。所以在函数外边是无法访问到函数内部的局部变量的。

    • 尽管我们使用global关键字可以在函数中去修改这个全局变量,但修改全局变量可能会导致程序可读性变差,出现莫名奇妙的BUG,代码的维护成本提高。

  • 相关阅读:
    .NET5微服务示例-Ocelot网关
    .NET5微服务示例-Polly熔断与降级
    .NET5微服务示例-Consul注册中心
    .NET下使用ELK日志中心
    [ 题解 ] [ 数学 ] [ JZOJ5809 ] 数羊
    [ 题解 ] [ 数学 ] 函数 (sequence) (欧拉函数)
    [ 题解 ] [ JZOJ5777 ] 小 x 玩游戏
    更换谷歌浏览器视频输入源
    axios 封装及 API 接口管理
    小程序代码压缩实践
  • 原文地址:https://www.cnblogs.com/shujufenxi/p/12148381.html
Copyright © 2011-2022 走看看