python中with的用法
来源:1-1 课程整体介绍及导学
qq_依梵_03210232
2018-01-21
网上的一段代码:
with tf.name_scope('input'): x = tf.placeholder(tf.float32, [None, 784], name='x-input') y_ = tf.placeholder(tf.float32, [None, 10], name='y-input')
这个with后面不加as的情况是什么意思呀?
写回答
1回答
-
with 什么意思我在代码里解释了,嘿嘿。
这是一个利用了「上下文管理器」的保险又方便的异常处理的方法。
比如说打开一些文件做操作,你也许文件未关闭(用close() 方法)就结束了程序;或者你的文件操作出现问题异常退出了。这两种情况都会发生内存资源泄露。
对于其他类型的也类似,比如你操作 线程锁。
在 TensorFlow 里面,Session(会话)也是类似的。你用 tf.Session() 来创建了一个 Session对象,你如果处理完之后不把它用 close()
方法关闭;或者中间出了问题异常退出了,那么资源也会泄露。
with 的基本用法:
with 上下文表达式 (as 目标/别名):
各种操作
你可以写:
with tf.Session() as sess:
W = sess.run(w_data)
则可以用 sess 来代替 创建的 Session 那个对象。
题外话:其实 with 的实现里面用到了类似 try…except…finally 的语句。012018-01-21
相似问题