英俊男孩建坤 发表于 2021-1-20 22:51:21

问题求助

def funlist(alist):
    alist.append(1)
    alist =

l1 =
funlist(l1)
print(l1)


为什么我定义的函数中 alist = 在下面使用时没有运行?
最后我print(l1) 不应该输出的结果是吗?

°蓝鲤歌蓝 发表于 2021-1-20 23:14:16

1. 运行了。
2. 不应该。
alist 是局部变量,函数运行结束就被销毁了。

英俊男孩建坤 发表于 2021-1-20 23:17:06

°蓝鲤歌蓝 发表于 2021-1-20 23:14
1. 运行了。
2. 不应该。
alist 是局部变量,函数运行结束就被销毁了。

函数运行到哪一步才算结束    是运行完alist.qppend(1) 就结束了吗?

°蓝鲤歌蓝 发表于 2021-1-20 23:19:02

英俊男孩建坤 发表于 2021-1-20 23:17
函数运行到哪一步才算结束    是运行完alist.qppend(1) 就结束了吗?

整个运行完才算结束

昨非 发表于 2021-1-20 23:20:26

def funlist(alist):
    alist.append(1)
    alist =
    print(alist)#你想要的那个列表只在局部可见

l1 =
funlist(l1)
print(l1)#l1是全局的列表,传入函数运行后依旧存在

英俊男孩建坤 发表于 2021-1-20 23:20:41

°蓝鲤歌蓝 发表于 2021-1-20 23:19
整个运行完才算结束

整个运行完才结束的话 也就是说运行的时候alist= 【2 ,3】 这个局部变量没有销毁   既然没有销毁最后print(l1)输出的结果不就应该是 吗?

英俊男孩建坤 发表于 2021-1-20 23:22:49

昨非 发表于 2021-1-20 23:20


所以说 这就是一个优先级的问题    全局的优先级高于局部的优先级 ?

°蓝鲤歌蓝 发表于 2021-1-20 23:25:29

英俊男孩建坤 发表于 2021-1-20 23:20
整个运行完才结束的话 也就是说运行的时候alist= 【2 ,3】 这个局部变量没有销毁   既然没有销毁最后pri ...

服了。
运行的时候是没有销毁啊,可是 print(l1) 是在 funlist(l1)后面,那么程序运行到 print(l1) 的时候 funlist 已经运行完了。

YunGuo 发表于 2021-1-20 23:26:14

英俊男孩建坤 发表于 2021-1-20 23:22
所以说 这就是一个优先级的问题    全局的优先级高于局部的优先级 ?

l1和alist是两个不同的变量,一个是全局变量,一个是局部变量,函数外部不能使用函数内的局部变量,只在函数内部有效。你print输出的是全局变量l1。

昨非 发表于 2021-1-20 23:27:39

英俊男孩建坤 发表于 2021-1-20 23:22
所以说 这就是一个优先级的问题    全局的优先级高于局部的优先级 ?

不是优先级啊,而且要说优先级:
在局部:局部变量>全局
在全局:就没局部哪儿来的比较。。。。
页: [1]
查看完整版本: 问题求助