【发布时间】:2018-03-18 23:06:01
【问题描述】:
有没有办法在 python 中的 with 语句中进行内联解包?
现在,我有一个自定义上下文管理器,它返回一个 sqlalchemy row 对象,关联的 session 需要将其作为 2 元组潜在地删除,并在上下文退出时处理必要的数据库操作:
with self.row_sess_context(dbid=relid) as tup:
row, sess = tup
...[manipulation code]...
现在,在我看来,能够执行以下操作会特别“pythonic”:
with self.row_sess_context(dbid=relid) as row, sess:
...[manipulation code]...
特别是因为 python 已经在大多数其他上下文中支持序列解包(for、列表理解、正常分配等)。
尝试尝试输入 confuses the sublime text syntax highlighter,我显然不够聪明,无法理解这是否完全不可能从正式的语法定义中获得。 row, sess 是无效的
有没有比手动解压元组更好的方法?
【问题讨论】:
-
“试图将
row, sess放在括号中似乎没有用”——你能详细说明一下吗?根据我对语法的阅读,应该可以。 -
你想做什么works just fine。如果您的代码不起作用,则说明您做错了什么,您需要向我们展示代码以便我们修复它,而不仅仅是告诉我们它存在并且由于某种原因不起作用。
-
@jwodder - 见编辑。原来我只是个傻瓜。
-
@abarnert - 见编辑。原来我只是个傻瓜。
标签: python python-3.x