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,一经查实,立即删除!

相关文章

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

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

智能计算之蚁群算法(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&…

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

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

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的方式给它添加了文字&…

沉降观测曲线图 沉降观测汇总_这些沉降观测要求,工程人必须掌握!

1沉降观测的基本要求 1)仪器设备、人员素质的要求根据沉降观测精度要求高的特点,为能精确地反映出建(构)筑物在不断加荷下的沉降情况,一般规定测量的误差应小于变形值的1/10—1/20,为此要求沉降观测应使用精密水准仪(S1或S05级),水…

rgb红色范围_【论文阅读18】RGB-D Object-Oriented Semantic Mapping

主要内容基于RGB-D数据的语义建图(SLAM帮助语义)。具体过程如下首先利用SSD执行单帧RGB图片(2D)物体检测。接着基于检测结果和深度信息,利用3D分割算法进一步分割3D点云。最终利用ORB-SLAM2的相机位姿信息将每帧的3D点…

7价 半导体掺杂_掺杂工艺(一)

概述半导体材料的独特性质之一是它们的导电性和导电类型(N型或P型)能被产生和控制。在本章中,描述在晶圆内和表面上特别的小块导电区和PN结的形成。介绍扩散和离子注入两种掺杂技术的原理和工艺。简介使晶体管和二极管工作的结构就是PN结。结(junction)就是富含电子…

数据增强_imgaug图像数据增强必备工具

导读我们经常会遇到训练模型时数据不够的情况,而且很多时候无法再收集到更多的数据,只能通过做一些数据增强或者其它的方法来合成一些数据。常用的数据增强方式有裁剪、旋转、缩放、亮度对比度色度饱和度变换、仿射变换、透视变换等,这篇文章…

深度学习多模态融合_3D目标检测多模态融合综述

0前言本篇文章主要想对目前处于探索阶段的3D目标检测中多模态融合的方法做一个简单的综述,主要内容为对目前几篇几篇研究工作的总结和对这个研究方面的一些思考。在前面的一些文章中,笔者已经介绍到了多模态融合的含义是将多种传感器数据融合。在3D目标检…

自适应宽_移动端实现自适应缩放界面的方法汇总

作者 | 唐宋元明清2188来源 | http://www.cnblogs.com/kybs0/在开发App端的网页时,要适配iphone、ipad、ipod、安卓等各种机型,一般是直接使用em、px转em、界面缩放。本章是通过将界面缩放,等比例显示在各机型上。过程中遇到了些问题和大坑~然…

Java继承简介

继承是面向对象的三大特征之一。继承和现实生活中的“继承”的相似之处是保留一些父辈的特性,从而减少代码冗余,提高程序运行效率。 Java 中的继承就是在已经存在类的基础上进行扩展,从而产生新的类。已经存在的类称为父类、基类或超类&…

各种说明方法的答题格式_初中语文阅读答题公式 语文阅读理解万能公式大全...

很多人想知道初中语文阅读理解有哪些答题公式,语文阅读理解的万能公式有哪些呢?下面小编为大家介绍一下!初中语文阅读理解答题公式大全(一)某句话在文中的作用:1、文首:开篇点题;渲染气氛(散文),埋下伏笔(记叙类文章)&#xff0c…

esp8266手机端网络调试助手_esp8266定时控制

要实现定时控制,需要先实现手动控制,或者app控制。实测定时精度,北京时间,误差不超过1秒。第一、远程App控制或手动控制下载esp8266示例程序下载地址: 点击下载本demo 是利用arduino IDE开发,关于arduino IDE 的ESP826…

集成学习之Adaboost(提升方法)

Adaboost 提升方法就是从弱学习器出发,反复学习,得到一系列弱分类器(基本分类器),然后组合这些弱分类器,构成一个强分类器。 基本思路 待解决问题 1、每一轮如何改变训练数据的权值或概率分布 2、如何将…