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

内部改变全局变量的情况 global 的使用
函数和内存的交互原理,读取和执行
 NAME = "yangtuo"
def chang_name ():  # 强势理解函数被读取到内存后未执行,被调用后才会被执行
global NAME
NAME = "tiancai"
print(NAME) print(NAME)    # yangtuo 未调用函数时,不会改变 def chang_name1():
print(NAME) chang_name1()  # yangtuo 仍然未调用
chang_name()   # yangtuo 仍然未调用
chang_name1()  # tiancai 被调用后改变
print(NAME)    # tiancai 被调用后改变,全局再次使用受影响

更改全局变量
 name = "yangtuo"
def yang():
name = "yang"
def tuo():
global name
name = "tuo"
tuo()
print(name) print(name)
yang()
print(name)

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


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

day10 局部变量 全局变量 作用域前奏的更多相关文章

  1. JavaScript this 局部变量全局变量 作用域 作用域链 闭包

    从阮老师博客的一道测试题说起: 代码段一: var name = "The Window"; var object = { name : "My Object" ...

  2. iOS 局部变量 全局变量 成员变量

    一.成员变量 : 写在类声明的大括号中的变量叫成员变量 (也叫属性/实例变量) 成员变量不可离开类 离开了类就不是成员变量 成员变量不能再定义的同事初始化 成员量只能通过对象来访问 成员变量存储在堆中 ...

  3. 【学习笔记】Shell-1 变量:命名规范、变量赋值/取值/取消、局部变量/全局变量、预设环境变量

    1.Shell变量 从变量的实质上来说,变量名是指向一片用于存储数据的内存空间. Shell变量是一种弱类型的变量,即声明变量时不需要指定其变量类型,也不需求遵循“先声明再使用”的规定,想用即可用. ...

  4. Effective Java 第三版——57. 最小化局部变量的作用域

    Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...

  5. C_局部变量&全局变量

    2018-5-9   Writen By Stephen.Yu  一.定义 1. 局部变量:在函数中定义的变量 2. 全局变量:在所有函数体之外定义 定义(Definition):声明并分配内存;未分 ...

  6. 九、python沉淀之路--递归、全局变量、局部变量、作用域

    一.递归 1.递归函数,同时使用嵌套,并且是将别的函数作用于调用函数里面 例1 num = [1,2,3,4,5] def add_one(i): return i+1 def reduce(i): ...

  7. c语言局部变量 静态局部变量 全局变量与静态全局变量

    基本概念: 作用域:起作用的区域,也就是可以工作的范围. 代码块:所谓代码块,就是用{}括起来的一段代码. 数据段:数据段存的是数,像全局变量就是存在数据段的 代码段:存的是程序代码,一般是只读的. ...

  8. python学习day10 函数Ⅱ(参数&作用域)

    函数Ⅱ(参数&作用域) 知识小结: py2与py3的区别 逻辑运算()>not>and>or 字符串翻转切片翻转 is与==区别 git相关 数据类型判断 操作系统:cent ...

  9. day 3 局部变量 全局变量

    1.局部变量 2.全局变量(死歌的大招)函数前面声明的都是全局变量 3.全局变量和局部变量的区别 1)老方法 def get_temper(): temper = 33 return temper d ...

随机推荐

  1. 分析网络流量Capsa笔记

    Capsa是一款网络分析仪,允许您监控网络流量,解决网络问题并分析数据包.通过提供生动的图表,通过设计良好的GUI提供丰富的统计信息和实时警报,Capsa可让IT管理员实时识别,诊断和解决有线和无线网 ...

  2. WPF 带清除按钮的文字框SearchTextBox

    原文:WPF 带清除按钮的文字框SearchTextBox 基于TextBox的带清除按钮的搜索框 样式部分: <!--带清除按钮文字框--> <Style TargetType=& ...

  3. ORA-00020:maximum number of processes (150) exceeded

    异常的含义 超过最大的进程数 我们使用下面的语句可以查看与进程(process)的相关参数: 如上所示,这里的最大进程数是150. 问题可能存在的原因 1.应用程序在使用数据库连接池时,使用完成后没有 ...

  4. Python高级特性(切片,迭代,列表生成式,生成器,迭代器)

    掌握了Python的数据类型.语句和函数,基本上就可以编写出很多有用的程序了. 比如构造一个1, 3, 5, 7, ..., 99的列表,可以通过循环实现: L = [] n = 1 while n ...

  5. python打印列表的下标和值的例子:

    python打印列表的下标和值的例子: In [1]: list01=[1,4,5] In [10]: def funct01(ll):   ....:     for index,value in ...

  6. GBDT和随机森林的区别

    GBDT和随机森林的相同点: 1.都是由多棵树组成 2.最终的结果都是由多棵树一起决定 GBDT和随机森林的不同点: 1.组成随机森林的树可以是分类树,也可以是回归树:而GBDT只由回归树组成 2.组 ...

  7. dotnetcore/CAP

    CAP带你轻松玩转Asp.Net Core消息队列 CAP是什么? CAP是由我们园子里的杨晓东大神开发出来的一套分布式事务的决绝方案,是.Net Core Community中的第一个千星项目(目前 ...

  8. (一)ABP添加控制器和页面(有时候页面不出来)

    1:添加控制器后需要写[Area("AppAreaName")] 2:继承  WebControllerBase 3:创建视图就可以出现index页面了

  9. python第二周

    第二周,PYTHON图形绘制 一,计算机技术的演进发展 1946-1981.从第一台计算机的诞生到IBM的PC机的出现,我们称之为”计算机系统结构时代“.————这个时代重点在解决计算能力问题 198 ...

  10. mysql下批量清空某个库下的所有表(库不要删除,保留空库)

    总所周知,mysql下要想删除某个库下的某张表,只需要切换到该库下,执行语句"drop table tablename"即可删除!但若是该库下有成百上千张表,要是再这样一次次执行d ...