看到不同的同事代码,表达同一个意思,主要 if
部分以下哪种写法比较好些:)
def xxxx(ph, sin_id):
"""
"""
with OracleConnect(xxxx) as db_oracle:
sql = u"xxxxx"
has_data, sql_data = db_oracle.get_one(sql)
# 第一种写法
if has_data:
calculate_func = "rollback"
task_id = sql_data.get("task_id", "")
else:
calculate_func = "calculate"
task_id = sin_id
return task_id, calculate_func
def xxxx(ph, sin_id):
"""
"""
with OracleConnect(xxxx) as db_oracle:
sql = u"xxxxx"
has_data, sql_data = db_oracle.get_one(sql)
# 第二种写法
calculate_func = "rollback" if has_data else "calculate"
task_id = sql_data.get("task_id", "") if has_data else sin_id
return task_id, calculate_func
第一种写法,比较直接,清晰明了,但有同事说不够 pythonic
。
第二种写法比较 pythonic
,但是类似写法,对于刚接手别人代码的同事,就要稍微绕一下才能读懂。
由此拓展,想到在写业务逻辑中,经常会有 if
语句的判断,请问大家是怎么选择代码风格的:)
101
menc 2018-12-12 11:39:28 +08:00
@congeec 都无所谓,hashable type 就可以这么用,list 不行,list 改成 tuple 行,但是数据库返回结果应该是 tuple 不是 list
|
102
menc 2018-12-12 11:40:52 +08:00
@congeec 都无所谓,hashable type 就可以这么用,list 不行,list 改成 tuple 行,但是数据库返回结果应该是 tuple 不是 list。
|
103
onice 2018-12-12 12:07:36 +08:00
毫无疑问是第一种。如果代码是写给自己看,可以用第二种。
|
104
mili8908 2018-12-13 09:17:21 +08:00
简单的 if 判断当然第二种 你不觉得很美吗=。=
|
105
JacketPC 2018-12-13 21:31:57 +08:00
自己写无所谓,但写给别人的,不觉得第一个好方便检查吗?
|
106
Qzier 2018-12-14 10:12:10 +08:00
第一种写法,因为 The Zen of Python 中已经阐明:Explicit is better than implicit。
|
107
iorilu 2018-12-23 18:29:28 +08:00
基于同一个变量判断的, 肯定放一起好
基于这个例子是 1 好, 如果单独变量可以考虑 2 |