python系统关键字_Python基础教程 - global关键字及全局变量的用法

Python中global关键字主要作用是声明变量的作用域。

在C语言中,由于变量一定是先声明,后使用,所以我们可以清楚的知道,现在使用的变量是全局还是局部,比如:

int a = 5;

void test(void)

{

a = 1; // 没有先声明,所以用的是全局的变量a

}

void test1(void)

{

int a;

a = 2; // 前面声明了,所以用的是局部变量a,对其所做的修改不会影响全局变量a

}

void main(void)

{

printf("before: a = %d\n", a);

test();

printf("after test: a = %d\n", a);

test1();

printf("after test1: a = %d\n", a);

}

在python中,变量不需要先声明,直接使用即可,那我们怎么知道用的是局部变量还是全局变量呢?

首先:python使用的变量,在默认情况下一定是用局部变量。

其次:python如果想使用作用域之外的全局变量,则需要加global前缀。

举例说明,不用global的情况:

a = 5

def test():

a = 1

print 'In test func: a = %d' % a

test()

print 'Global a = %d' % a

程序执行结果为:

In test func: a = 1

Global a = 5

可以看出,不加global的时候,在函数内部是改不了外面的全局变量的(list类型例外)。

下面是使用global前缀的情况:

a = 5

def test():

global a

#此处声明,告诉执行引擎:我要用全局变量a,不要整成局部的了!

a = 1

print 'In test func: a = %d' % a

test()

print 'Global a = %d' % a

执行结果:

In test func: a = 1

Global a = 1

可以看出,在函数内部成功的修改了全局变量的数值。

事实上,网络上很多文章推崇另外的一种方法来使用全局变量:使用单独的global文件。

方法如下:

1. 在同一个文件夹下,新建2个文件: myglobal.py test.py

2. myglobal.py中放置全局变量,内容示例如下:

a = 0

b = 1

c = 2

d = 3

3. test.py中是测试代码,其中可以使用全局变量

import myglobal

def test():

myglobal.a = 100

print 'myglobal a = %d' % myglobal.a

test()

print 'after test, myglobal a = %d' % myglobal.a

执行test.py的结果如下:

myglobal a = 0

after test, myglobal a = 100

OK,同样成功修改了全局变量(这个说法不准确,但姑且就这么叫吧)。

在实际使用中,两种方法各有优势,通常我们大多数时候只是用python写小功能的脚本,此时用global关键字就够了。

如果写比较大的功能应用时,用后一种方法可以使得全局变量的管理更为方便。

--------------------------------------分割线 --------------------------------------

Python 的详细介绍:请点这里

Python 的下载地址:请点这里

logo.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564718.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何查看keepalived版本号_Keepalived介绍 , 配置说明 , 及实际应用

1. Keepalived介绍Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat、corosync、pacemaker。但是它一般不会单独出现,而是与其它负载均衡技术(如lvs、haproxy、nginx)一起工作来达到…

智能计算之神经网络(Hopfield网络-DHNN,CHNN )介绍

目录 1. 神经网络受欢迎的原因 2. 人工神经网络定义 3. 人工神经网络的学习能力 4. 人工神经网络的基本原理 5. 神经网络的研究进展 6. 神经网络的典型结构 6.1 单层感知器网络 6.2 前馈型网络 6.3 前馈内层互联网络 6.4 反馈型网络 6.5 全互联网络 7. 神经网络的学…

用python画渐变的圆_使用numpy绘制圆形渐变

由于对称性,实际上只需要计算图像256*256的四分之一,即64*64,然后将其逐块旋转90度,然后将它们组合起来。这样,总时间是计算256256像素的1/4倍。在 以下是示例。在import numpy as np import matplotlib.pyplot as plt…

发那科程序全部输出_如何拷贝FANUC系统全部程序

在SETTING画面复I/O通道一项中设定I/O4(或者制20#参数改为4),将存储卡(插在机床的面板上的PCMCIA接口里。选择编辑模式,程序钥匙锁打开,全部程序预览页面(列表),点击(操作),点击右扩展键,点击(F输出)&#…

计算平均成绩

根据用户输入的总人数和总成绩计算平均成绩。要求程序能够处理总人数或者总成绩不是数字时的情况。 使用多重 catch 语句时,Java 虚拟机会把实际拋出的异常对象依次和各个 catch 代码块中声明的异常类型匹配,如果异常对象为某个异常类型或者其子类的实例…

智能计算之蚁群算法(ACO)介绍

目录 1. 简介 2. 基本思想 3. 研究进展 4. 基本流程 (1)路径构建 (2)信息素更新 ​5. 应用举例 6. 改进版 6.1 精华蚂蚁系统 6.2 基于排列的蚂蚁系 6.3 最大最小蚂蚁系 6.4 蚁群系统 7. 参数设置​编辑 8. 练习题 …

Java try catch finally语句

在实际开发中,根据 try catch 语句的执行过程,try 语句块和 catch 语句块有可能不被完全执行,而有些处理代码则要求必须执行。例如,程序在 try 块里打开了一些物理资源(如数据库连接、网络连接和磁盘文件等&#xff09…

linux代码_Sonar代码走查的配置(linux)

SonarQube是一个静态代码质量检查工具,可以检查出代码中明显或潜在问题。虽然偶尔它的判断会是错误的,但还是值得我们用。它能以比较基础的级别减少代码出错的可能,可以节省人工Review代码时间。它支持多种语言的检查。我这里的代码是java代码…

智能计算之粒子群算法(PSO)介绍

目录 1. 简介(思想) 2. 研究发展 3. 算法步骤 4. 应用举例 5. 粒子群优化算法的改进研究 5.1 理论改进 5.2 拓扑结构改进 5.3 混合算法改进 5.4 离散版本改进 6. 相关应用 7. 参数设置​ 1. 简介(思想) 粒子群优化算法(Particle Swarm Optimization&…

passive模式 tcp_FTP主动模式和被动模式的比较

总是记不住FTP主动和被动模式的区别。放在这里,以备日后查阅。FTP是仅基于TCP的服务,不支持UDP。与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口)。但FTP工作方式…

Java 中 finally 与 return 的执行顺序详解

java方法是在栈幀中执行,栈幀是线程私有栈的单位,执行方法的线程会为每一个方法分配一小块栈空间来作为该方法执行时的内存空间,栈幀分为三个区域: 1 . 操作数栈,用来保存正在执行的表达式中的操作数,数据…

车辆工程用得到python吗_如今车辆工程真的不如以前了吗?

背景:合肥工业大学2015届毕业生,车辆工程专业,理科实验班,成绩排名专业10%以内,有推免研究生资格。 上面这些title虽然比不上985的,但在当年工大的各专业中,基本上是无敌的存在了。 然后当年我竟…

headfirstjava最新版本下载_读过HeadFirstJava的大神进来看看

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼线程一章有个聊天程序,我运行之后客户端没将服务器的内容显示在JTextArea中,求解答客户端程序import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.net.*;public…

python爬虫能秒杀么_面试题之用python爬取并夕夕不同时段秒杀商品信息

先上效果图吧(因为确实也是刚入门,很多细节没有注意到的,各位尽管提出来)并夕夕很多时候都在不停的有秒杀商品的活动,对于价格问题,我就没法讨论了,但是人家能吸引到这么多流量,真本…

Java throws和throw

throws 声明异常 当一个方法产生一个它不处理的异常时,那么就需要在该方法的头部声明这个异常,以便将该异常传递到方法的外部进行处理。使用 throws 声明的方法表示此方法不处理异常。throws 具体格式如下: returnType method_name(paramLi…

html 怎么让tr的css覆盖td的_通达OA上传漏洞之变量覆盖分析

作者:kw0ng开始通达OA上传到包含漏洞分析的文章已经有很多,本文重点分析,文件上传处决定路径信息是否回显的UPLOAD_MODE参数是怎么传递的。代码分析触发文件上传点位于/ispirit/im/upload.php中,服务端在接收文件信息的同时还需要…

怎么看电脑的hdmi是输出还是输入_高清hdmi矩阵切换器4进4出音视频方案介绍景阳华泰科技...

高清hdmi矩阵切换器4进4出多少钱?这就需要了解您需要哪种4进4出矩阵!景阳华泰科技生产的矩阵分为两种形式,一种是我们近几十年来一直使用的一体机,高清HDMI矩阵切换器4进4出采用一体机结构,经济实惠,功能较…

专业音频如何把电平转换成dbu_谭俊峰|录课、买麦,你应该了解的音频常识

近来,有打算录录课、吹吹牛,于是想升级一下硬件。既然要录音,那搞个好一点儿的麦克风总是必要的。于是,上网去查。不查不知道,一查吓一跳。为啥呢?既不为产品的琳琅满目,也不为价格的云泥之别&a…

android 自定义进度条_第一百八十九回:Android中自定义ProgressBar三

各位看官们大家好,上一回中咱们说的是Android中自定义ProgressBar的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起Talk Android吧!看官们,我们在上一回是通过自定义PrgressBar的方式给它添加了文字&…

Java信息验证

某仓库管理系统的登录界面中需要输入用户名和密码,其中用户名只能由 6~10 位数字组成,密码只能有 6 位,任何不符合用户名或者密码要求的情况都视为异常,并且需要捕获并处理该异常。 下面使用自定义异常类来完成对用户登录信息的验…