python函数对变量的作用_python函数对变量的作用及遵循的原则

1.全局变量和局部变量

全局变量:指在函数之外定义的变量,一般没有缩进,在程序执行的全过程有效

局部变量:指在函数内部使用的变量,仅在函数内部有效,当函数退出时变量将不存在

例如:

1 n=1 #n是全局变量

2 deffunc(a,b):3 c=a*b #c是局部变量,a和b作为函数参数也是局部变量

4 returnc5 s=func("knock~",2)6 print(c)

Traceback (most recent call last):

File "F:\pyrhon\函数对变量的作用.py", line 6, in

print(c)

NameError: name 'c' is not defined

这个例子说明,当函数执行完退出后,其内部变量将被释放。

如果函数内部使用了全局变量呢?例如:

n=1 #n是全局变量

deffunc(a,b):

n=b #这个n是在函数内存中新生成的局部变量,不是全局变量

return a*b

s=func("knock~",2)print(s,n) #测试一下n值是否发生改变

knock~knock~ 1

函数func()内部使用了变量n,并且将变量参数b赋值给变量n,为何n值没有改变?

因为函数func()有自己的内存空间,它将n=b语句理解为生成一个局部变量n,并将参数b赋值给它,此时func()函数没有将n当作全局变量。所以,函数退出后,局部变量n被释放,全局变量n的值没有改变。

如果希望让func()函数将n当作全局变量,需要在变量n使用前显式说明该变量未全局变量,修改后:

1 n=1 #n是全局变量

2 deffunc(a,b):3 globaln4 n=b #将局部变量b赋值给全局变量n

5 return a*b6 s=func("knock~",2)7 print(s,n) #测试一下n值是否发生改变

knock~knock~ 2

2.python函数对变量的作用遵守原则:

(1)简单数据类型变量无论是否与全局变量重名,仅在函数内部创建和使用,函数退出后变量被释放,如有全局同名变量,其值不变。

(2)简单数据类型变量在用global保留字声明后,作为全局变量使用,函数退出后该变量保留且值被函数改变。

(3)对于组合数据类型的全局变量,如果在函数内部没有被真实创建的同名变量,则函数内部可以直接使用并修改全局变量的值。

(4)如果函数内部真实创建了组合数据类型变量,无论是否有同名全局变量,函数仅对局部变量进行操作,函数退出后局部变量被释放,全局变量值不变。

思考:如果全局变量不是整数n,而是列表类型ls,会怎么样呢?

本篇主要讲述函数对程序中变量的作用问题,涉及组合数据类型,后期会持续更新讲解。

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

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

相关文章

不用开发实现RDS RDWeb门户美化和个性化

个性化RDWeb界面RDWeb原生界面相对比较简洁,每个企业部署的RDWeb都是千篇一律的,有些用户可能希望将网页装饰得个性化点。在谈到自定义Web界面,第一反应可能是使用代码进行编写,但是这里要和大家分享的是无代码美化和自定义RDWeb界…

安卓使用富文本编辑器html5,Android富文本编辑器,图文详细

Android富文本编辑器,图文详细资源下载此资源下载价格为3D币,请先登录资源文件列表AndroidRichTextEditor/.classpath , 475AndroidRichTextEditor/.project , 857AndroidRichTextEditor/AndroidManifest.xml , 1281AndroidRichTextEditor/bin/AndroidManifest.xml …

python pip安装pyinstaller报错_pip install pyinstaller (安装过程报错解决)

安装目标:pip install pyinstaller报错内容:WARNING: You are using pip version 19.2.3, however version 20.0.2 is available.You should consider upgrading via the python -m pip install --upgrade pip command.解决方法:运行--->c…

[SQL]LeetCode183. 从不订购的客户 | Customers Who Never Order

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址&a…

access四舍五入取整round_access中round函数怎么用

access中round函数怎么用?access中round函数的用法!下面,小编通过示例来给大家介绍access中round函数的用法。工具/原料access 2007方法/步骤打开access应用程序,新建一个数据库,并新建如下图所示的worker数据表,用于…

其他大神的配置 nginx 配置参考

2019独角兽企业重金招聘Python工程师标准>>> user nginx nginx; worker_processes 2; #error_log logs/error.log; error_log logs/error.log notice; #error_log logs/error.log info; pid logs/nginx.pid; google_perftools_profiles /tmp/tcmalloc; worker_rlim…

小孩用计算机做作业怎么表达,计算机作业

满意答案尧Dreaman夕2014.09.25采纳率:40% 等级:10已帮助:1121人Windows中可以设置、控制计算机硬件配置和修改桌面布局的应用程序是( D)A) Word B) Excel C)资源管理器 D)控制面板多窗口的切换可以通过(D )来实现A)在任务栏上用鼠标单击右…

Delphi读写二进制文件

http://www.cnblogs.com/hnxxcxg/p/3691742.html 二进制文件(也叫类型文件),二进制文件是由一批同一类型的数据组成的一个数据序列,就是说一个具体的二进制文件只能存放同一种类型的数据。type TMember record Name : string[10]…

[No0000178]改善C#程序的建议1:非用ICloneable不可的理由

好吧,我承认,这是一个反标题,实际的情况是:我找不到一个非用ICloneable不可的理由。事实上,接口ICloneable还会带来误解,因为它只有一个Clone方法。 我们都知道,对象的拷贝分为:浅拷…

uniapp网络请求获取数据_2.uni-app 发起网络请求

## uni.request(OBJECT)发起网络请求。**OBJECT 参数说明**![](https://box.kancloud.cn/a90bf284df069eddde4019c04db7d627_861x475.png)**success 返回参数说明**![](https://box.kancloud.cn/10d44a6d100bb3833b22f2d41e85d8eb_861x165.png)**data 数据说明**最终发送给服务…

SOM 的两种算法

我参考了这篇文章http://www.scholarpedia.org/article/Kohonen_network另一个很好的演示在这里http://www.math.le.ac.uk/people/ag153/homepage/PCA_SOM/PCA_SOM.htmlSOMt是训练步一个输入数据是n维向量待训练的是一堆节点,这堆节点之间有边连着,通常是…

python集合的两种类型_python 入门之 – 集合类型(十九)

在python中,集合是一个无序的,不重复的数据组合,他的主要工作如下:1、去重,把一个列表变成集合,就自动去重了2、关系测试,测试两组数据之间的交集、差集、并集等关系我来举个例子,前…

计算机数值计算的相关文章,数值计算论文.doc

数值计算论文PAGE \* MERGEFORMAT 13高斯消去法在电路分析中的应用—利用计算机求解一些复杂电路的参数雷嘉豪电子信息工程学院自动化一班100401102摘 要求解线性代数方程组的数值方法有很多,但归纳起来,可分为两类:一种是直接法,…

bzoj 2756奇怪的游戏

2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec Memory Limit: 128 MBSubmit: 2571 Solved: 685[Submit][Status][Discuss]Description Blinker最近喜欢上一个奇怪的游戏。 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数。每次 Blinker 会选择两个相邻的格子&…

秒懂,Java 注解 (Annotation)你可以这样学

转自: https://blog.csdn.net/briblue/article/details/73824058 文章开头先引入一处图片。 这处图片引自老罗的博客。为了避免不必要的麻烦,首先声明我个人比较尊敬老罗的。至于为什么放这张图,自然是为本篇博文服务,接下来我自会说明。好了…

Java技术中的三大特性

为什么80%的码农都做不了架构师?>>> 1.虚拟机 Java虚拟机JVM(Java Virtual Machine)在Java编程里面具有非常重要的地位,约相当…

matlab图像增强分段线性函数_图像增强、锐化,利用 PythonOpenCV 来实现 4 种方法!...

图像增强目的使得模糊图片变得更加清晰、图片模糊的原因是因为像素灰度差值变化不大,图片各区域产生视觉效果似乎都是一样的, 没有较为突出的地方,看起来不清晰的感觉解决这个问题的最直接简单办法,放大像素灰度值差值、使图像中的…

python多人聊天室_Python基于Socket实现简易多人聊天室

前言套接字(Sockets)是双向通信信道的端点。 套接字可以在一个进程内,在同一机器上的进程之间,或者在不同主机的进程之间进行通信,主机可以是任何一台有连接互联网的机器。套接字可以通过多种不同的通道类型实现:Unix域套接字&…

计算机考研保护一志愿,考研良心大学,保护一志愿的考研名校!

大家好,我是,今天胖胖要跟大家送一些重要的干货,就是对于选学校的小伙伴来说也好,或者是即将要参加研究生复试的小伙伴们来好胖胖在这里要跟大家说一个关于考研白名单的事情,因为大家都知道考研是会分黑名单和白名单&a…

python变量输出到文件_使用函数将多个变量写入文件

首先,要获得当前正在执行的脚本名,或者更确切地说是调用函数的模块,必须从堆栈跟踪中获取它。globals()-它将在writeToValues()函数的相同上下文中执行,因此它不会从“调用者”接收globals()。要纠正这种情况,您可以使…