首页 > 编程语言 >python中全局变量和局部变量作用域理解

python中全局变量和局部变量作用域理解

时间:2023-11-28 13:24:44浏览次数:40  
标签:count 10 city 作用域 局部变量 python 全局变量 mod

一:描述

python中全局变量和局部变量作用域理解

 

二:回答

1. 局部变量不能修改全局变量

局部变量只作用于方法内,无法修改全局变量

 1 #全局变量city
 2 city = "上海"  
 3   
 4 def mod_city():  
 5     #局部变量city
 6     city = "深圳"  
 7     print(city)  
 8   
 9 print(city)  
10 mod_city()  
11 print(city)
12 
13 >>> 运行结果如下:
14 >>> 上海
15 >>> 深圳
16 >>> 上海

这里第9行和第11行都会打印上海,因为mod_city函数外部的city是全局变量,全局变量不会被函数内部的city即局部变量修改。
说明:如果这里mod_city有返回值,返回了city的值,然后在第10行用city接收返回值,即city = mod_city(),这样最后打印出来的也会是深圳,即外面的全局变量被赋值修改了

 

2. 局部变量加上关键词global可以变成全局变量

 1 #全局变量city
 2 city = "上海"  
 3   
 4 def mod_city():  
 5     #局部变量city加了关键词global,就变成了全局变量
 6     #全局变量就可以修改外部的city值
 7     global city  
 8     city = "深圳"  
 9     print(city)  
10   
11 print(city)  
12 mod_city()  
13 print(city)
14 
15 >>> 程序执行结果如下:
16 >>> 上海
17 >>> 深圳
18 >>> 深圳

上面函数内的city本来是一个局部变量,但是因为加了关键字global,city就变成了全局变量,它就可以修改外面的全局变量city的值
所以打印当调用mod_city方法后,city变量的值被改变,在函数外部打印city,打印出来的也会是深圳

 

3. 扩展

 1 count = 0  
 2 def add(num):  
 3     global count  
 4     count += num  
 5     return count  
 6   
 7 add(10)  
 8 add(20)  
 9 add(30)  
10 print(count)
11 
12 >>> 程序运行结果如下:
13 >>> 60

add(10):此时num为10,count为全局变量为0+10=10
add(20):此时num为20,count为全局变量为10+20=30
add(30):此时num为30,count为全局变量为30+30=60

标签:count,10,city,作用域,局部变量,python,全局变量,mod
From: https://www.cnblogs.com/miaomiaokaixin/p/17861717.html

相关文章

  • python中面向对象有什么特点
    一:问题python中面向对象有什么特点? 二:回答python同其他面向对象语言一样,有3个特征:封装、继承、重写 简单理解就是:封装:把一系列属性和操作封装到一个方法里面,这样想要实现某种效果,只需要简单的调个方法名字就行了,不需要在写一遍所有的操作内容继承:简单理解就是拼爹,父辈拥......
  • python面向对象方法与属性
    一:描述python中面向对象方法与属性:①静态变量:实例变量、类变量②静态方法:@staticmethod,相当于被放到类里的函数③私有属性和方法:以两个下划线开头,如__secret()④魔术方法:以两个下划线开头且以两个下划线结尾,如__secret__()⑤受保护的属性和方法:以一个下划线开头,如_secret()⑥特殊......
  • python对象嵌套
    一、描述python对象嵌套,即包含的关系。python实现:班级(名字,多个学生)、学生(学号,姓名) 二、详细说明要想实现班级里含有多个学生的这种关系,可以在班级类里嵌套学生类,将学生类信息以列表的形式存储保存即可1classStudent:2def__init__(self,s_no,s_name):3......
  • python虚拟环境
    一:问题我下了别人的工程,工程环境是用全局的python环境好,还是弄一个虚拟环境好一点,为什么? 二:回答用虚拟环境好,因为能够实现环境分离,你能在虚拟环境中安装项目特定的依赖项,而不会影响全局Python环境。从而实现不同项目维护不同的依赖关系,而不必担心版本冲突或相互影响。具体操......
  • python函数返回多个值会打包成元组
    一:问题python中函数可以一次返回多个值么? 二:回答可以的,其一次返回的多个值会被打包成元组如下所示:defdemo2(name,age):content=f"nameis{name},ageis{age}"returnname,age,contentif__name__=="__main__": data=demo2("mmkx",20) pri......
  • python函数return会结束整个函数的执行
    一:问题python函数中有for循环,对for循环进行return,函数会继续往下执行么? 二:回答不会。如下所示:defdemo3():print("a")foriinrange(3):print(i)returniprint("b")defdemo4():print("a")foriinran......
  • python中lambda函数如何理解
    一:问题python中lambda函数如何理解? 二:回答如下所示:defadd(a,b):returna+bdata=lambdaa,b:a+bif__name__=="__main__": print(add(3,4)) print(data(3,4))>>>运行结果如下:>>>7>>>7这里lambda函数,可以这样理解:lambda替代了上面的d......
  • python中调用函数,只写一个函数名是什么意思?
    一:问题python中调用函数,只写一个函数名是什么意思? 二:回答只写函数名,则调用的是函数的地址写函数名并传参,则调用的是函数返回值举例说明:1test_data=[{"name":"李白","order":1},{"name":"杜甫","order":4},2{"name":"高力士",......
  • 带有最小间隔时间的队列读取实现 —— 最小等待时间的队列 —— Python编程
     (注:照片源自免费网站,地址:https://www.freepik.com/photos/angry-panda/13)  ==================================================  事情起源是最近在看一个TensorFlow的代码,是TensorFlow实现了一个最小等待时间的队列,解释一下就是一个进程阻塞在一个队列上等待数据的读取,但是......
  • python通过requirements.txt文件管理工程包
    一:问题你创建了一个python工程,里面有很多包,怎么让别人拿到这个工程时,知道要安装哪些包,并一键自动全部安装呢? 二:解决方案你可以在你的工程中,执行下面的命令,它可以自动生成你的工程的依赖包清单:pipfreeze>requirements.txt别人拿到你的工程后,可以执行下面的命令,实现一键......