规则命名以及基本介绍
 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. SQL Server中的Merge关键字(转载)

    简介 Merge关键字是一个神奇的DML关键字.它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句.MSDN对于Merge的解释非常的短小精悍:”根 ...

  2. Github.Git

    Github介绍:http://www.yangzhiping.com/tech/github.html Git:http://res.crossincode.com/wechat/git.html

  3. VMware workstation运维实践系列博客导航

    第一章:VMware workstation虚拟化1.1 VMware workstation计算网络存储介绍1.2 VMware workstation其他功能特性介绍1.3 VMware work ...

  4. springboot+thymeleaf刨坑——首页加载js/css等失败解决方法

    在使用thymeleaf加载css或js样式,当我们进入登录页的时候发现,所有的样式都是加载失败的.原因是在新版中有这样一个坑……: 当我们设置了addInterceptors-注册拦截器的时候,通常 ...

  5. MongoDB日常运维操作命令小结

    总所周知,MongoDB是一个NoSQL非数据库系统,即一个数据库可以包含多个集合(Collection),每个集合对应于关系数据库中的表:而每个集合中可以存储一组由列标识的记录,列是可以自由定义的, ...

  6. 分布式监控系统Zabbix-添加windows监控主机

    大多数情况下,线上服务器都是linux系统,但是偶尔也会有些windows机器.下面简单介绍下zabbix添加windows监控机的操作:1)下载windows的zabbix_agent下载地址:ht ...

  7. 剑指offer:二叉树中和为某一值的路径

    本来这只是一个普通的算法题,但是当初自己OJ上提交时,总是提交失败,而我自己认定程序逻辑没有任何问题.然后开始就在本机上调试,结果发现这是由于Python的对象机制而引发的.所以先把问题算法题贴出来, ...

  8. Python-元组-10

    元祖 Why:对于容器型数据类型list,无论谁都可以对其增删改查,那么有一些重要的数据放在list中是不安全的,所以需要一种容器类的数据类型存放重要的数据,创建之初只能查看而不能增删改,这种数据类型 ...

  9. 个人作业Week3

    个人作业week3 一.  调研,评测 1.我的使用体验 版本:IOS版   BUG_1: 点击单词本中的“同步”后,会提示登录Microsoft账户.登录成功立即开始同步单词本.在单词本同步过程中, ...

  10. 对spring cloud config的一点理解

    以下部分纯属个人理解,但是结果都是经过demo验证. 一.spring cloud config介绍 spring cloud是spring家族中的一个微服务工具包,其中包含了很多微服务的工具.偏向于 ...