zoukankan      html  css  js  c++  java
  • 全局变量与局部变量

    1.全局变量:无缩进的变量,在整个代码中任意位置都可以调用

    2.局部变量:在子程序中设置的有缩进的变量,只能在子程序中调用

    3.局部变量与全局变量重名时,互相不影响,局部变量总是先从自己等层次的代码块中寻找,找不到在从外面一层找

    4.一般全局变量设置成大写形式,而局部变量设置成小写,便于区分

    5.例一:

    1 def test():
    2     print(name)
    3 test()  #输出‘alex’
    name = 'alex'
    def test():
    name = 'pig'
    print(name)
    test() #输出pig

    6.在子程序中想修改全局变量时,可引入 global 

    name = 'alex'
    def test():
        global name
        name = 'pig'
        print(name)
    test() #输出pig

    7.函数嵌套

    name = 'alex'
    def test():
    name = 'pig'
    def test_1():
    name_1 = 'cat'
    print(name_1)
    def test_2():
    name_2 = 'dog'
    print(name_2)
    test_2()

    print(name)
    test_1()
    test() #依次输出pig,cat,dog

    8.前向引用 :函数即变量

    函数之间互相引用时,不在乎函数的顺序,因为调用时均在内存里,但是由于执行命令是有顺序,执行的命令应在所涉及的所有函数之后,否则读取不到,会报错。如:

     1 def test():
     2     name = 'Mike'
     3     print(name)
     4     test_1()
     5 def test_1():
     6     name = 'John'
     7     print(name)
     8 test()
     9 def test_1():
    10     name = 'John'
    11     print(name)
    12 def test():
    13     name = 'Mike'
    14     print(name)
    15     test_1()
    16 test()
    17 def test():
    18     name = 'Mike'
    19     print(name)
    20     test_1()
    21 test()
    22 def test_1():
    23     name = 'John'
    24     print(name) #会报错,上面两个输出一样

    9.改变上一级变量,使用  nonlocal

    def test():
        name = 'John'
        print(name)
        def test_1():
            nonlocal name
            name = 'Mary'
            print(name)
        test_1()
    test()  #输出John,Mary

    10.全局变量不管在哪个子程序中始终可以修改(global形式)

  • 相关阅读:
    练习上传下载时遇到的问题
    el表达式遇到的问题
    js中for循环闭包问题记录
    随机排座位(模板) 20.10.17
    #STL:优先队列数据结构函数的用法 #堆 #优先队列数据结构(堆) #priority_queue 20.10.17
    关于int的范围
    #归并排序 归并排序的刷题记录 ~20.09.25
    #欧拉函数 ~20.8.27
    #排列 #组合 ~20.8.24
    105.七夕祭
  • 原文地址:https://www.cnblogs.com/lzjdsg/p/10146480.html
Copyright © 2011-2022 走看看