发布网友 发布时间: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 可以自己百度
关于作用域给你再写个简单的示例, 你对照着理解一下