以下说法错误的是( ) A.局部变量[1]为组合数据类型[2],但是重新创建,则仍是局部变量 B.局部变量为组合数据类型且未创建,等同于全局变量[3] C.在函数体内定义变量时,可以用关键字global声明为全局变量,使之在函数内,外均可以使用D.在函数内部定义的变量一定是局部变量
以下说法错误的是( )
A.局部变量[1]为组合数据类型[2],但是重新创建,则仍是局部变量
B.局部变量为组合数据类型且未创建,等同于全局变量[3] C.在函数体内定义变量时,可以用关键字global声明为全局变量,使之在函数内,外均可以使用
D.在函数内部定义的变量一定是局部变量
题目解答
答案
解答:
A. 局部变量为组合数据类型,但是重新创建,仍然是局部变量,这是正确的。当在函数内部重新创建一个同名的局部变量时,它将遮盖(覆盖)外部的同名全局变量或其他局部变量。
B. 局部变量为组合数据类型且未创建等同于全局变量,这也是正确的。在函数内部如果没有创建同名的局部变量,它会访问外部的同名全局变量。
D. 在函数内部定义的变量一定是局部变量,这也是正确的。在函数内部声明的变量默认是局部变量,它们只在函数内部可见,不会影响外部的同名变量。
C 选项是错误的,因为在 Python 中,要将一个变量声明为全局变量,需要使用 global 关键字。但是,使用 global 关键字并不会使变量在函数内外都可以使用,它只是将局部变量指向了全局变量的引用。例如:
global_var = 10
def set_local_variable():
local_var = 5 # 这是一个局部变量
global global_var
global_var = 20 # 这将改变全局变量的值
set_local_variable()
print(global_var) # 输出 20
print(local_var) # 这里会报错,因为 local_var 是局部变量,不可在函数外部访问
所以,正确答案是选项 C。
解析
本题考查Python中变量作用域的概念,特别是局部变量与全局变量的区分,以及global关键字的作用。解题关键在于理解:
- 局部变量的定义与覆盖规则;
- 组合数据类型在函数内部的修改特性;
global关键字的作用范围与限制。
错误选项的核心在于对global关键字的误解:使用global声明后,变量并非在函数内外“均可定义并使用”,而是允许函数内部修改已存在的全局变量。
选项分析
选项A
局部变量为组合数据类型(如列表、字典)时,若在函数内部重新赋值(如 a = [1,2]),会创建新的局部变量,覆盖同名全局变量。此描述正确。
选项B
若函数内部未定义同名局部变量,访问组合数据类型时,默认操作全局变量(如 a.append(3))。此描述正确。
选项C
错误点:global关键字的作用是允许函数内部修改全局变量,而非“定义新全局变量”。例如:
- 若函数内部声明
global x但全局未定义x,会报错; - 即使声明
global x,函数内部定义的其他变量(如local_var)仍为局部变量,无法在外部访问。
选项D
函数内部定义的变量默认为局部变量,与是否声明 global 无关(除非显式声明)。此描述正确。