题目
以下程序的输出结果是( ) img1 = [12,34,56,78] img2 = [1,2,3,4,5] def modi(): img1 = img2 print(img1) modi() print(img1)A[12, 34, 56, 78] [1,2,3,4,5]B[1,2,3,4,5] [1,2,3,4,5]C[12, 34, 56, 78] [12, 34, 56, 78]D[1, 2, 3, 4, 5] [12, 34, 56, 78]
以下程序的输出结果是( )
img1 = [12,34,56,78]
img2 = [1,2,3,4,5]
def modi():
img1 = img2
print(img1)
modi()
print(img1)
- A[12, 34, 56, 78]
[1,2,3,4,5] - B[1,2,3,4,5]
[1,2,3,4,5] - C[12, 34, 56, 78]
[12, 34, 56, 78] - D[1, 2, 3, 4, 5]
[12, 34, 56, 78]
题目解答
答案
参考答案: D
解题思路: 程序先调用函数modi(),函数体内进行赋值操作,列表对象的赋值就是简单的对象引用。函数体内,img1 和img2 是一样的,他们指向同一片内存,img1不过是img2的别名。因此,函数调用[1]执行后输出[1,2,3,4,5]。然后执行print(img1),此处的img1是外部变量,与函数体内img1不是同一个变量,仍输出[12,34,56,78]。>>>立即刷题
解析
步骤 1:定义变量
程序开始定义了两个列表变量 img1 和 img2,其中 img1 包含元素 [12, 34, 56, 78],img2 包含元素 [1, 2, 3, 4, 5]。
步骤 2:定义函数 modi
定义了一个函数 modi,函数体内将 img1 赋值为 img2,即 img1 = img2。这一步只是将 img1 变量指向 img2 所指向的内存地址,img1 变量本身并没有改变。
步骤 3:调用函数 modi 并输出 img1
调用函数 modi(),函数体内执行 img1 = img2,此时函数内的 img1 变量指向 img2 所指向的内存地址,即 [1, 2, 3, 4, 5]。函数体内输出 img1,即输出 [1, 2, 3, 4, 5]。
步骤 4:输出外部变量 img1
函数调用结束后,外部变量 img1 仍然指向原来的内存地址,即 [12, 34, 56, 78]。因此,输出外部变量 img1,即输出 [12, 34, 56, 78]。
程序开始定义了两个列表变量 img1 和 img2,其中 img1 包含元素 [12, 34, 56, 78],img2 包含元素 [1, 2, 3, 4, 5]。
步骤 2:定义函数 modi
定义了一个函数 modi,函数体内将 img1 赋值为 img2,即 img1 = img2。这一步只是将 img1 变量指向 img2 所指向的内存地址,img1 变量本身并没有改变。
步骤 3:调用函数 modi 并输出 img1
调用函数 modi(),函数体内执行 img1 = img2,此时函数内的 img1 变量指向 img2 所指向的内存地址,即 [1, 2, 3, 4, 5]。函数体内输出 img1,即输出 [1, 2, 3, 4, 5]。
步骤 4:输出外部变量 img1
函数调用结束后,外部变量 img1 仍然指向原来的内存地址,即 [12, 34, 56, 78]。因此,输出外部变量 img1,即输出 [12, 34, 56, 78]。