• 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






  • 相关阅读:
    scanf正则表达式
    找出 alter system kill session ‘sid,serial#’ kill 掉的数据库会话对应进程
    查询包含某个字段的表
    Oracle12C查询自建用户(非系统自带)
    监控慢SQL
    根据SPID查找SQL语句
    查看表空间使用率
    找出在使用临时表空间的SQL
    重设数据文件大小sql语句
    查看锁表进程SQL语句
  • 原文地址:https://www.cnblogs.com/shijieli/p/9687586.html
Copyright © 2020-2023  润新知