一、介绍:

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

局部变量意思就是在局部生效的,出了这个变量的作用域,这个变量就失效了

全局变量的意思就是在整个程序里面都生效的,在程序最前面定义的都是全局变量,全局变量如果要在函数中修改的话,需要加global关键字声明,如果是list、字典和集合的话,则不需要加global关键字,直接就可以修改。

局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中

备注:全局变量少用,有点儿不安全(每个函数都能改),全局变量占内存,一直到最后

实例1-局部变量

name = '小黑' #全局变量,其他函数都可以用
def get_name():
name = '小白' #局部变量
print(name)
get_name()

输出:

小白

实例2-函数找不到变量时,到外面找

name = '小黑' #全局变量,其他函数都可以用
def get_name():
# name = '小白' #局部变量
print(name)
get_name() #调用函数,找不到name时,到外面找name变量

输出:

小黑

实例3:-函数内改变全局变量,需要加global关键字声明(str ,int,元组都要声明下),如果是list、字典和集合的话,则不需要加global关键字

name = '小黑' #全局变量,你在哪个函数里面都可以用
names = []
def get_name():
global name #声明
names.append('hahhah') #字典和列表不需要声明,可直接修改.#str int 元组,需要声明
name = '小白' #自己函数连找不到变量,去外面找。
print('函数里面的name',name)
def get_name2():
print('get_name2',name)
get_name2() #函数不调用,代码不被执行,不然函数仅仅是定义,只有定义,才能生效
get_name()
print('函数外面的name', name)

输出:

get_name2 小黑
函数里面的name 小白
函数外面的name 小白

习题1:

money = 500
def test(consume):
return money - consume #前面money找全局变量,后面传过来的也是500
def test1(money):
return test(money) + money
money = test1(money)
print(money)

习题2:

def test():
global a
a = 5
def test1():
c = a + 5
return c
# test()
res = test1() #函数不调用,不执行
print(res)

day4_局部变量和全局变量的更多相关文章

  1. [Sass]局部变量和全局变量

    [Sass]局部变量和全局变量 Sass 中变量的作用域在过去几年已经发生了一些改变.直到最近,规则集和其他范围内声明变量的作用域才默认为本地.如果已经存在同名的全局变量,从 3.4 版本开始,Sas ...

  2. js方法入参或局部变量和全局变量重名,用来赋值全局变量会失败

    今天遇到个bug,最后终于知道原因了,js方法入参和全局变量重名,用入参赋值全局变量失败,就是说方法入参不能和全局变量重名. 现在下面的例子也说明,局部变量和全局变量不可以同名不光是入参,只要同名赋值 ...

  3. JavaScript局部变量和全局变量的理解

    原文链接:http://www.cnblogs.com/eric-qin/p/4166552.html JavaScript局部变量和全局变量的理解   1 2 3 4 5 6 7 8 9 10 &l ...

  4. 【C语言】C语言局部变量和全局变量

    目录: [局部变量] · 定义 · 作用域 · 生命周期 · 用static修饰局部变量 [全局变量] · 定义 · 作用域 · 生命周期 1.局部变量 · 定义 在函数(代码块)内部定义的变量称为局 ...

  5. JavaScript中局部变量与全局变量的不同

    JavaScript中局部变量与全局变量 我们知道,JavaScript的变量是松散型的变量,也就是说,其变量只需用var声明,其赋值的类型是不限定的.比如: var person=18; perso ...

  6. 理解LoadRunner中的局部变量和全局变量

    在C语言中,变量有效性的范围称变量的作用域.不仅对于形参变量,C语言中所有的量都有自己的作用域,按作用域范围不同,可分为局部变量和全局变量两种变量类型. 在LoadRunner中应用全局变量和局部变量 ...

  7. C语言局部变量和全局变量问题汇总

    1.局部变量能否和全局变量重名? 答:能,局部会屏蔽全局.要用全局变量,需要使用"::" 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变 ...

  8. C语言入门(9)——局部变量与全局变量

    变量有效性的范围称变量的作用域.C语言中所有的量都有自己的作用域.变量说明的方式不同,其作用域也不同. C语言中的变量,按作用域范围可分为两种,即局部变量和全局变量.   局部变量 局部变量也称为内部 ...

  9. javascript 局部变量和全局变量

    刚开始学js,遇到了一个奇怪的问题,查找之后知道了答案 需要记住两句话 1 Javascript的变量的scope是根据方法块来划分的(也就是说以function的一对大括号{ }来划分).切记,是f ...

随机推荐

  1. RobotFrameWork编写接口测试及如何断言

    1. 前言 本篇是第一系列(Http接口自动化)的第五课程,如果对系列课程大纲不清楚的,可以查看<RobotFramework系列免费课程-开课了~>. 前面我们介绍了,在真正实施前,需先 ...

  2. github上总结的python资源列表【转】

    Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-python 是 vinta 发起维护的 Python 资源列 ...

  3. mac下卸载jdk

    mac下安装软件很简单,但是卸载起来相对比较麻烦,下面进入正题: 首先你得知道你的电脑中安装了哪些jdk(mac可以安装多个jdk) 打开mac的终端,输入命令: ls /Library/Java/J ...

  4. jQuery创建元素和添加子元素

    var li = $("<li class=\"TopNav arrow\" secondMenu=\"menu_" + i + "\ ...

  5. docker被屏蔽后下载方法

    docker镜像默认的官网上传平台:https://hub.docker.com/,k8s运行时需要从google下载镜像(k8s.gcr.io),但该网被屏蔽了,怎样下载到所需镜像呢? 1. 可在知 ...

  6. perl控制流介绍(if条件,while,for循环,foreach)

    1. 语句块:{ }之间的部分即为BLOCK语句块. 2. 条件语句:if ( expression )  BLOCK; if ( expression )     BLOCK1else BLOCK2 ...

  7. Failed to execute 'write' on 'Document'动态载入的js不能执行write

    统计代码一般都是直接一个标签,插入js,标签放在哪里,统计图表就放在哪里! 我现在是稍微改了一下,我自己加了一点js,在页面所有元素都加载完成之后我再动态的把统计js插入到我需要的地方. 统计代码的s ...

  8. C# 在while循环中new的对象

    一: 问:那每次循环都会new一个A?那内存不是会满吗?还是说要把这个初始化对象的动作放到循环外面的写法会比较好? while(true) { A a = new A(); ... sleep(100 ...

  9. Android手机用wifi连接adb调试的方法

    https://www.jianshu.com/p/dc6898380e38 0x0 前言 Android开发肯定要连接pc的adb进行调试,传统的方法是用usb与pc进行连接,操作简单即插即用,缺点 ...

  10. jmeter3.0下载及安装

    http://blog.csdn.net/shizhiailian/article/details/52443169 下载: https://archive.apache.org/dist/jmete ...