小弟刚学 Python 遇到一个知识点来请教,关于{}用法

2020 年 4 月 1 日
 Thatscode99
看到有些人会用这种写法
else:
file.close()
return {}
或者
list={}
这个 return {}是什么意思?似乎{}这个也大有学问。 谢谢
4939 次点击
所在节点    Python
24 条回复
1992w
2020 年 4 月 1 日
返回一个没有任何 key 的字典,{}字典的字面量写法
YUX
2020 年 4 月 1 日
一般是 list=[] 空 list
Yourshell
2020 年 4 月 1 日
就返回一个空的字典呗,好久没写了也不知道对不对😄
gimp
2020 年 4 月 1 日
一个字典:{ a: 1 }

一个空字典:{ }
jeenysem
2020 年 4 月 1 日
返回一个空字典
Davic1
2020 年 4 月 1 日
return {}
等价于
return dict()
ji39
2020 年 4 月 1 日
python 的字典和 js 的对象很像啊
pompeii
2020 年 4 月 1 日
就是一个空字典,应该是为了保持返回值类型、结构的一直型,即不管是执行了 if 后面的代码,还是执行了 else 里面的代码,这段代码的结果的类型和结构都是一样的,便于处理
MilkShake
2020 年 4 月 1 日
返回字典
RRRoger
2020 年 4 月 1 日
需要注意的是,如果你这里的 list={1},那么 list 就是一个 set,set 是无序集合
Kilerd
2020 年 4 月 1 日
有一说一,list={} 就很离谱
arerec
2020 年 4 月 1 日
u1s1,list={} 代码里下毒
oahebky
2020 年 4 月 1 日
一般是一两年新手这么写。
返回空的东西就直接 return None 。或者 return None 也不写(默认行为)

调用函数的地方对返回值直接 if ret: ... 判断就可以。
这样才是灵活使用动态类型。

如果确定要期望这个函数返回一个字典。那么原代码发生 return {} 的 case 就应该抛出异常。
imkuang
2020 年 4 月 1 日
list={}???

想一下这样会发生什么,hahahahaha
list={}
set_test=(1,2,3)
list_test=list(set_test)
imkuang
2020 年 4 月 1 日
@xiri 一时手快打错了,名字改成 tup_test 比较好,这是元组
ctro15547
2020 年 4 月 1 日
这样起名字容易误解。。 {} 是字典<type 'dict'> ,[]是列表<type 'list'>,xxx ={} 可以看成创建了一个 xxx 空的字典对象,然后可以 xxx[‘test’] = ‘test’ 加内容 或者其他字典操作,return {} 然函数返回空字典,伪代码 xxx = 函数的 return {} 跟 xxx = {} 一样,这样可以给你判断一下函数返回了啥
no1xsyzy
2020 年 4 月 1 日
@oahebky #13 我觉得如果不把 None 写进函数类型注记里,包括用 Optional 隐含 None,那么不要 return None 而是直接 return ;反之,如果函数类型注记里有 None,就算是 Union[..., None] 这种,也是写 return None 而不是 return 。如果某函数既 Optional 又 Union[..., None],那么我觉得需要明晰此函数的行为并清理注记。

相对地,如果返回值期望是 None,通常还是采用 if ret is None 来判断,一是 Python 有太多 Falsy 值,二来判断效率高(直接比较对象 id ),三来这样就不可能被 __bool__ (意外)下毒(比如 def __bool__(self): sys.exit() )。

不过 return {},确实通常比较少见,通常出现空字典也是尝试组装返回值时没有插入任何值导致的结果。不过可能出现在某些算法的短路里面,比如递归的初始条件。

def comb(keys, values):
____if keys and values:
________return {key[0]: value[0], **comb(keys[1:], values[1:])}
____else:
________return {}
vanityfairn
2020 年 4 月 1 日
list={},hhhh
hhhsuan
2020 年 4 月 1 日
@oahebky 我就不喜欢返回 None,你讲讲返回 None 有什么好处?
iuyoy
2020 年 4 月 1 日
{} 和 {key:value} 是 dict,而{element}是 set 即 {1,2,3}是 set 。至于 list = {},一般情况下不要改写 python 内置变量。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/658164

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX