• 7-5python函数-变量的作用域


    7.5.1、局部变量和全局变量

    局部变量是在函数内部定义的变量,只能在函数内部使用;
    全局变量是在函数外部定义的变量(没有定义在某一个函数内) ,所有函数
    内部都可以使用这个变量,

    提示:在其他的开发语言中,大多不推荐使用全局变量-可变范围太大, 导致
    程序不好维护!

    7.5.2、局部变量

    局部变量是在函数内部定义的变量,只能在函数内部使用;
    函数执行结束后,函数内部的局部变量,会被系统回收;
    不同的函数,可以定义相同的名字的局部变量,彼此之间不会产生影响;

    7.5.3 、局部变量的作用

    在函数内部使用,临时保存函数内部需要使用的数据

    总结

    ●局部变量
    。函数内部定义的变量就是局部变量
    。局部变量只能在函数内部使用
    。不同的函数局部变量名字可以相同
    ●全局变量
    。函数外部定义的变量就是全局变量
    。全局变量在所有函数内部也可以使用
    。局部变量能解决的问题,不要通过全局变量解决,尽量少定义全局变量

    7.5.4、局部变量的生命周期(局部变量作用范围)

    def my_func1():
        a = 1   # a是一个局部变量,只属于my_func1函数
        print(a)
    
    def my_func2():
        a = 2   # a是一个局部变量,只属于my_func2函数
        print(a)
    
    my_func1()  # 调用函数的时候,局部变量a出现了
    # my_func1函数调用完毕,a 消失了
    # 定义函数的时候局部变量并不存在,只有调用函数的时候局部变量出现了
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    ●局部变量从调用函数的时候开始在内存出现,函数调用完毕,局部变量从内存消失
    ●如果一个函数内部定义了局部变量,但这个函数没有被调用,那么局部变量也不在内存中存

    7.5.5 、全局变量(全局变量作用范围)

    全局变量是在函数外部定义的变量,所有函数内部都可以使用这个变量
    为了保证所有的函数都能够正确使用到全局变量,应该将全局变量定义放在其他函数上方。

    ●全局变量一般定义在函数定义的上方
    ●全局变量从定义变量开始在内存中出现,一直到程序运行完成,和程序起从内存中消失

    num1 = 2
    
    def my_func1():
        print(num1)
    
    def my_func2():
        print(num1)
    
    my_func1()
    num1 = 10
    my_func2()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    执行结果
    "D:\Program Files1\Python\python.exe" D:/Pycharm-work/pythonTest/函数/15全局变量.py
    2
    10
    
    • 1
    • 2
    • 3
    • 4

    7.5.6、全局变量与局部变量重名

    ●如果在函数内部定义一个变量名字和全局变量重名,那么在这个函数内部只能使用局部变

    num1 = 1
    def my_func1():
        num1 = 10   # 这里不是为全局变量赋值,这里是定义了一个局部变量,名字和全局变量重名
        print(num1)  # 打印的是局部变量num1的值
        num1 += 1 # 这里改的是局部变量num1的值
    
    def my_func2():
        print(num1)  #  全局变量num1
    
    my_func1()
    my_func2()
    print(num1)     # 打印的是全局变量的num1的值
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    注意:只是在函数内部定义了一个局部变量而已,只是变量名相同在函数内部不能直接修改全局变量的值。

    7.5.7、global关键字

    如果在函数中需要修改全局变量,需要使用global 进行声明

    ●当需要在函数内部修改全局变量的值,修改前需要用global修饰全局变量的名字

    def 函数():
        global 全局变量名
        全局变量名 =
    • 1
    • 2
    • 3
    num1 = 10
    def my_func1():
        global num1  # 函数内部就不存在和全局变量重名的局部变量
        num1 = 1  # 这里是给全局变量num1 修改值
    
    def my_func2():
        print(num1)  # 如果在函数内部不修改全局变量的值,就不用global
    
    print(num1)
    my_func1()
    print(num1)
    
    执行结果:
    "D:\Program Files1\Python\python.exe" D:/Pycharm-work/pythonTest/函数/17在函数内部修改全局变量的值.py
    10
    1
    
    Process finished with exit code 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    num1 = 10
    def my_func1():
        # global num1  # 函数内部就不存在和全局变量重名的局部变量
        num1 = 1  # 这里是给全局变量num1 修改值
    
    def my_func2():
        print(num1)  # 如果在函数内部不修改全局变量的值,就不用global
    
    print(num1)
    my_func1()
    print(num1)
    
    执行结果
    "D:\Program Files1\Python\python.exe" D:/Pycharm-work/pythonTest/函数/17在函数内部修改全局变量的值.py
    10
    1
    
    Process finished with exit code 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    7.5.8、 练习

    定义一个全局变量name="张三”,定义一个函数my_ test1, 在函数my_ test1 内部
    修改全局变量name的值为”李四”

    name = "张三"
    
    def my_test1():
        global name
        name = "李四"
    
    my_test1()
    print(name)
    
    执行结果:
    "D:\Program Files1\Python\python.exe" D:/Pycharm-work/pythonTest/函数/18练习-在函数内部修改全局变量的值.py
    李四
    
    Process finished with exit code 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    变量的作用域

    a = 1
    
    def my_test1():
        global a
        a = 2
    
    def my_test2():
        a = 3  # 这里的a是一个只在my_test2里面的局部变量
        my_test1()
    
    print(a) # 程序入口在这里
    my_test2()
    print(a)
    
    执行结果:
    "D:\Program Files1\Python\python.exe" D:/Pycharm-work/pythonTest/函数/19变量作用域.py
    1
    2
    
    Process finished with exit code 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    Docker日常工作常用命令
    Java-基于SSM的图书管理系统
    深入理解Git
    uniapp微信小程序开发踩坑日记:Vue3 + uniapp项目引入Echarts图表库
    大数据Doris(二十三):取消导入与其他导入案例参考
    Oracle关闭回收站
    开放内容处理框架(OCPF),轻松玩转各类数据处理
    近地面无人机植被定量遥感与生理参数反演
    懂这些套路,开发到大客户不是什么难题
    基于野马优化算法的函数寻优算法
  • 原文地址:https://blog.csdn.net/u014096024/article/details/125888534