zoukankan      html  css  js  c++  java
  • day10 局部变量 全局变量 作用域前奏


    规则命名以及基本介绍
    1 name="LHF"                         # 顶头写的全局都可以调用的就是全局变量,命名规则要求大写全局变量
    2 def chang_name():
    3 # global name                      # 在函数内定义全局变量,之后函数内调用改变就会全局都改变,如果要用到此命令一定要在函数最前面用,不然会报错
    4     name = "shuai"                 # 局部变量,值用于子程序所用,其他程序无法调用,命名规则要求全部小写
    5     print("chang_name",name)       # 优先取局部变量,局部取不到就取全局,在局部里面有的前提下,无法强制调用全局的
    6 chang_name()
    7 print(name)                        # 全局调用的时候只能调用全局的


    内部改变全局变量的情况 global 的使用
    函数和内存的交互原理,读取和执行
     1 NAME = "yangtuo"
     2 def     chang_name ():  # 强势理解函数被读取到内存后未执行,被调用后才会被执行
     3     global NAME
     4     NAME = "tiancai"
     5     print(NAME)
     6 
     7 print(NAME)    # yangtuo 未调用函数时,不会改变
     8 
     9 def chang_name1():
    10     print(NAME)
    11 
    12 chang_name1()  # yangtuo  仍然未调用
    13 chang_name()   # yangtuo  仍然未调用
    14 chang_name1()  # tiancai  被调用后改变
    15 print(NAME)    # tiancai  被调用后改变,全局再次使用受影响


    更改全局变量
     1 name = "yangtuo"
     2 def     yang():
     3     name = "yang"
     4     def tuo():
     5         global  name
     6         name = "tuo"
     7     tuo()
     8     print(name)
     9 
    10 print(name)
    11 yang()
    12 print(name)


    更改上一级变量
     1 name = "yangtuo"
     2 def     yang():
     3     name = "yang"
     4     def tuo():
     5         nonlocal  name
     6         name = "tuo"
     7     tuo()
     8     print(name)
     9 
    10 print(name)
    11 yang()
    12 print(name)
    总结:
    全局变量最外圈 用全大写命名
    局部变量在函数内 用全小写命名
    局部变量与全局变量互不干涉。
    函数调用不到局部变量会向上一级寻找直到找到最外层的全局变量
    global 可以在函数内将全局变量更改
    nolocal 可以在函数内对上一级的变量更改

    
    
     ps : 想试验一下内部一个变量和外部重名的同时再宣告全局更改后,是先调用哪一个结果报错了
    1 name = 123
    2 def change_name():
    3     name = 456
    4     global name
    5     name = 789
    6     return name
    7 print(name)
    8 print(change_name())
    9 print(name)
    1 global name
    2     ^
    3 SyntaxError: name 'name' is assigned to before global declaration






  • 相关阅读:
    SEO--我们是不是走错了路?
    Android中的几种网络请求方式详解 .
    Android中文URL乱码问题 解决
    Oracle的Move操作
    JavaScript取DOM中下拉框的选中值
    JSP中直接用正则表达式校验
    Oracle SQL查询,日期过滤条件要注意的一点
    Oracle Decode行变列
    strcpy和memcpy的区别
    static作用(修饰函数、局部变量、全局变量)
  • 原文地址:https://www.cnblogs.com/shijieli/p/9687586.html
Copyright © 2011-2022 走看看