with block或close()更Pythonic?

时间:2017-05-28 01:58:29

标签: python

我了解public void onItemClick(AdapterView<?> l, View v, int position, long id) { final Contact item = adapter.getItem(position); SQLiteDatabase database = db.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("etat", 1); database.update("contacts", values, "id=?", new String[] { String.valueOf(item.getId()) }); database.close(); } 块在退出块后自动调用with,并且通常用于确保不会忘记关闭文件。

似乎

之间没有技术差异
close()

with open(file, 'r+') as f:
    do_things(f)

比其他方式更像Pythonic吗?我应该在我的代码中使用哪个?

1 个答案:

答案 0 :(得分:3)

  

比其他方式更像Pythonic吗?

是的,首选的是with语句表单,它将文件管理逻辑封装在一行代码中。提高了业务逻辑与管理逻辑的比率,使程序更易于阅读和推理。

Per PEP 343,with语句的用途是:

This PEP adds a new statement "with" to the Python language to make
it possible to factor out standard uses of try/finally statements.