问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Python 中作用域与命名空间的问题?

发布网友 发布时间:2022-03-26 02:18

我来回答

2个回答

懂视网 时间:2022-03-26 06:39

在Python程序中创建、改变、查找变量名时,都是在一个保存变量名的空间中进行,而这个空间被称之为作用域。

  

  Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本shell,随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。自从20世纪90年代初Python语言诞生至今,它已被逐渐广泛应用于系统管理任务的处理和Web编程。

  

  

热心网友 时间:2022-03-26 03:47

i=2 这一句 是定义了一个局部变量i, 并赋值为2;  这个时候全局作用域的i会被屏蔽, 所以全局变量i是没有被修改的 所以结果是1;


访问全局变量时可以直接访问, 但是修改全局作用域的时候一定要在赋值之前,进行如下声明:

def f():

    global i


    i = 2


因为python里赋值语句和声明变量是一个体的, 所以需要global来告诉解释器i是全局变量, 接下来的i=2才能被当作是赋值

------------------追答---------------------

同一个代码块(作用域)里, 同一个变量的作用域只能是同一种或者说同一个变量只能来自同一个作用域, 不能是一会是局部变量然后又变成全局变量;

i = i + 1

首先前面的'i='表明了i是一个局部变量(没有global声明, 创建局部变量), 然后后面的'i+1'里的i自然也是局部变量(同一个函数下同一个变量,i已经是局部变量了, 不能再当作全局变量去用), 那么自然会报错, i在使用前未声明

i += 1

报错就更明显了, 没有global声明 那么再修改变量i的时候, 自然是当作局部变量, 使用前未声明

变量的查找顺序遵循 LEGB 可以自己百度 

关于作用域给你再写个简单的示例, 你对照着理解一下

追问非常感谢您的解惑,我还有一个问题向您请教:
在函数g()中,print(i)此时变量i取全局变量i中的值1,但是如果在print(i)前添加语句i=i+1,此时执行会报错:局部变量i没有被定义。我的疑问是:为什么执行i+=1时,局部变量i不会取全局变量i的值1来进行i+=1的操作,而是直接报局部变量i没有被定义的异常。
def g():
print(i)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
windows8怎么本地连接 windows8如何设置网络 诸葛亮故里诸葛亮故里纪念馆 临沂诸葛亮文化旅游节历届介绍 第四届诸葛亮文化旅游节纪念诞辰 ...请根据该表回答下面问题: (1)表中A、B、C分 ...请你分析样品A、B、C中代表血浆、原尿和尿液的样品分别是... c糖蛋白化验 江诗丹顿金属手表(江诗丹顿的手表女款) 定位最好的手表? 表带上的圈叫什么 Python 的类中到底有没有建立作用域 Python语言中作用域怎么理解? 苹果智能手机与其它品牌手机使用的实际优势在哪里? 苹果手机的优势是什么啊? 苹果手机的优点是什么? IPHONE手机有什么优点?它的好处到底在哪里? iPhone手机的优势究竟在哪里? 苹果手机比其他手机究竟好在哪里 苹果手机有什么优点?有什么缺点? 苹果公布业绩,苹果有手机有何优势? iPhone到底好用在哪里?为什么很多人都在买苹果手机? 苹果手机的好处在哪里 苹果手机那么贵,为什么还有那么多人用?有什么优势吗? 苹果手机有哪些好处? 苹果手机有什么优缺点? 苹果手机的有哪些优点。 苹果手机优势在哪里 苹果手机到底优秀在哪里?为什么那么多人想买? 苹果手机好在哪里? 苹果手机的优点在哪里 PYTHON 的变量作用域与内存分配 python什么是闭包 闭包的作用域 python变量的作用域到底怎么理解怎么用呢?谢谢! 深入探究Python中变量的拷贝和作用域问题 python 2.7 变量作用域的疑问 python中什么叫局部作用域 python for循环作用域问题 初学python,有关函数作用域问题 python 程序中有多少全局作用域?有多少局部作用域 如何在特定的作用域将python系统函数替换成自己的函数 python函数实参不是的作用域问题,高手来解释下下面的输出? 没看python的基础,求教python变量的作用域问题,下面附代码,感谢! python global的作用域 python中global的作用是什么? python3.5中,无法numpy怎么解决 dra-tl00什么型号? dra-tl00可以无线充电吗? dra-tl00能不能用三网的? 联通短信中心号码怎么设置? 苹果手机里不等于符号怎么打出来?