Python全局变量和局部变量

全局变量和局部变量

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

total = 0; # 这是一个全局变量
# 可写函数说明
def sum( arg1, arg2 ):#返回2个参数的和."total = arg1 + arg2; # total在这里是局部变量.#在函数中 如果对一个和全局变量名相同的变量进行=value的时候,默认是定义一个变量#只不过这个变量的名字和全局变量的名字相同罢了print ("函数内是局部变量 : ", total)return total;#调用sum函数
sum( 10, 20 );
print ("函数外是全局变量 : ", total)

以上实例输出结果:

函数内是局部变量 : 30
函数外是全局变量 : 0

global 和 nonlocal关键字

global

  当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了。

以下实例修改全局变量 num:

num = 1
def fun1():global num  # 使用global用来对一个全局变量的声明,那么这个函数中的num就不是定义一个局部变量,而是#对全局变量进行修改print(num) num = 123print(num)
fun1()

以上实例输出结果:
1
123

列表是当全局变量的
如下面的例子

nums = [11,22,33]
infor = {"name":"wang"}def test():#for num in nums:#    print(num)nums.append(44)infor['age'] = 18def test2():print(nums)print(infor)test() #[11, 22, 33, 44]
test2() #{'name': 'wang', 'age': 18}

nonlocal

  如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字了,如下实例:

def outer():num = 10def inner():nonlocal num   # nonlocal关键字声明num = 100print(num)inner()print(num)
outer()

以上实例输出结果:
100
100

另外有一种特殊情况,假设下面这段代码被运行:

a = 10
def test():a = a + 1print(a)
test()

以上程序执行,报错信息如下:

Traceback (most recent call last):File "test.py", line 7, in <module>test()File "test.py", line 5, in testa = a + 1
UnboundLocalError: local variable 'a' referenced before assignment

  错误信息为局部作用域引用错误,因为 test 函数中的 a 使用的是局部,未定义,无法修改

转载于:https://www.cnblogs.com/yangliguo/p/7921423.html

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

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

相关文章

前端之 jQuery 入门

jQuery介绍 jQuery是一个轻量级的、兼容多浏览器的JavaScript库。jQuery使用户能够更方便地处理HTML Document、Events、实现动画效果、方便地进行Ajax交互&#xff0c;能够极大地简化JavaScript编程。它的宗旨就是&#xff1a;“Write less, do more.“ jQuery的优势 一款轻…

python剑指offer替换空格_迷人的算法-剑指offer面试题5:替换空格

题目&#xff1a;请实现一个函数&#xff0c;把字符串中的每个空格替换成"%20"。例如&#xff0c;输入"We are happy."&#xff0c;则输出"We%20are%20happy."。此题看似简单&#xff0c;实则坑还是比较多的。替换字符的长度有变化&#xff0c;由…

音频视频解决方案:GStreamer/ffmpeg/ffdshow/directshow/vfw

音频视频编程相关&#xff1a;GStreamer/ffmpeg/directshow/vfw linux和window下几种流行的音频视频编程框架作一个总结&#xff0c;防止自己迷惘&#xff0c;免于晕头转向。 一、GStreamer GStreamer is a library that allows the construction of graphs of media-handlin…

Linux 将进程放入后台执行,解决网络,ssh断开导致进程结束(nohup, setsid, , disown)...

Linux 将进程放入后台执行&#xff0c;解决网络&#xff0c;ssh断开导致进程结束&#xff08;nohup, setsid, &, disown&#xff09; 1、nohup 命令 我们知道&#xff0c;当用户注销&#xff08;logout&#xff09;或者网络断开时&#xff0c;终端会收到 HUP&#xff08;…

bzoj1927

1927: [Sdoi2010]星际竞速Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 2556 Solved: 1580[Submit][Status][Discuss] Description 10年一度的银河系赛车大赛又要开始了。作为全银河最盛大的活动之一&#xff0c;夺得这个项目的冠军无疑是很多人的梦想&#xff0c;来自杰…

python until怎么用_python基础之从认识python到python的使用

python的历史&#xff1a;python的创始人是吉多范罗苏姆(Guido van Rossum)&#xff0c;人称“龟叔”&#xff0c;1989年圣诞节期间&#xff0c;Guido开始写Python语言的编译器。他希望这个叫做Python的语言能符合他的理想&#xff1a;创造一种C和shell之间&#xff0c;功能全面…

前端之同源策略 Jsonp 与 CORS

同源策略 同源策略&#xff08;Same origin policy&#xff09;是一种约定&#xff0c;它是浏览器最核心也最基本的安全功能&#xff0c;如果缺少了同源策略&#xff0c;则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的&#xff0c;浏览器只是针对同…

vue新手入门——vue-cli搭建

首先说明&#xff0c;以下内容vue官网都有文档&#xff0c;如果觉得麻烦啰嗦&#xff0c;请移步至 安装-vue.js 。 准备工作&#xff1a; 1.下载并安装node环境&#xff0c;一般情况下安装好node之后&#xff0c;npm也会安装好。具体安装的话&#xff0c;百度大概能帮得上忙。 …

如何看懂源代码–(分析源代码方法)

我们在写程式时&#xff0c;有不少时间都是在看别人的代码。例如看小组的代码&#xff0c;看小组整合的守则&#xff0c;若一开始没规划怎么看&#xff0c; 就会“噜看噜苦&#xff08;台语&#xff09; ” 不管是参考也好&#xff0c;从开源抓下来研究也好&#xff0c;为了了解…

linux关于安装

一&#xff0e;安装gcc gcc cloog-ppl ppl(libppl.so.7/libppl_c.so.2) cpp mpfr(libmpfr.so.1) gcc-c libstdc-devel mpfr-2.4.1-6.el6.i686.rpm和ppl-0.10.2-11.el6.i686.rpm 快捷键rz sz&#xff1a; rz、sz命令没找到&#xff1f; 安装lrzsz即可&#xff1a; shell># y…

python cmath模块_cmath模块-PYTHON

这是一个float型的常数>>> cmath.e2.718281828459045>>> type(cmath.e)文档>>> import cmath>>> help(cmath)Help on module cmath:NAMEcmathFILE/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/cm…

Python 第三方模块之 pdfkit

pdfkit&#xff0c;把 HTMLCSS 格式的文件转换成 PDF 格式文档的一个工具。 其实&#xff0c;pdfkit 是 html 转成 pdf 工具包 wkhtmltopdf 的 Python 封装。所以&#xff0c;首先安装 wkhtmltopdf 。 一般情况下&#xff0c;wkhtmltopdf需要手动安装&#xff0c;网站是 https…

LNMP环境添加第三方模块

一.在LNMP环境下添加memcache模块 1.安装依赖库(libevent) [rootnode1 ~]# tar xvf libevent-2.0.21-stable.tar.gz [rootnode1 ~]# cd libevent-2.0.21-stable [rootnode1 libevent-2.0.21-stable]# ./configure --prefix/usr/local/libevent [rootnode1 libevent-2.0.21-sta…

学生成绩管理系统-程序维护

托管平台地址&#xff1a;https://gitee.com/lucess/StudentMarkManage.git 小组名称:干翻沈师 程序运行方法: 1、后台服务&#xff1a;进入项目文件夹执行 python TeamProject.py runsercer 0.0.0.0:5050 2、前台服务&#xff1a;进入./WEB-INFO/TeamProjectWeb 文件夹执行 ya…

改需求

转载于:https://www.cnblogs.com/gw2010/p/7856484.html

架构师一般做到多少岁_软件测试可以做到多大岁数?

做这个行业也几年了&#xff0c;经常听到有人问&#xff0c;软件测试这个行业能干到多少岁&#xff0c;当然里边包含想要进入这个行业的和已经在这个行业里边发展的&#xff01;基本上软件测试可以分为三条职业发展路线&#xff1a;技术路线、管理路线、产品路线&#xff01;目…

Python 第三方模块之 MySQL数据库连接模块 PyMySQL

PyMySQL的安装 pip install PyMySQL python连接数据库 import pymysqlconn pymysql.connect(hostlocalhost, userroot, password"root",databasedb, port3306, # 数字3306charsetutf8, # 不是utf-8autocommitTrue # autocommitTrue 让每次提交都去调用…

初学Spring Boot

1.Spring Boot注解 (1)SpringBootApplication开启了Spring的组件扫描和Spring Boot的自动配置,实际上&#xff0c;SpringBootApplication是将三个注解组合在了一起&#xff0c;这三个注解分别是 SpringBootConfiguration&#xff0c;ComponentScan&#xff0c;Ena…

15条常用的视频音频编辑脚本命令(mencoder/ffmpeg等)

可以把它当快速简易参考看&#xff0c;主要的功能有&#xff1a; 视频格式转换音频格式转换切割视频及音频连接两段视频视频音频同步将图像系列转换成视频 这里是百鬼丸以前收集的一部分命令行视频音频编辑脚本命令&#xff0c;一直在自己的记事本里随时用&#xff0c;现在…

python rowcount_PyQt(Python+Qt)学习随笔:QTableWidget的currentItem、rowCount、columnCount等部件状态属性访问方法...

老猿将QTableWidget表格部件中反映部件当前情况的一些方法归类为部件状态访问方法&#xff0c;包括部件的行数、列数、当前项、当前行、当前列等属性访问方法。1、行数rowCountQTableWidget的rowCount属性保存表格部件中的行数&#xff0c;在QTableWidget创建时如果没有指定行数…