python的with语句,超级强大
来源:互联网 发布:网店美工课程设计 编辑:程序博客网 时间:2024/06/03 06:22
With语句是什么?
有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,Python的with语句提供了一种非常方便的处理方式。一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取数据,然后关闭文件句柄。如果不用with语句,代码如下:1
2
3
file
=
open
(
"/tmp/foo.txt"
)
data
=
file
.read()
file
.close()
1
2
3
4
5
file
=
open
(
"/tmp/foo.txt"
)
try
:
data
=
file
.read()
finally
:
file
.close()
1
2
with
open
(
"/tmp/foo.txt"
) as
file
:
data
=
file
.read()
with如何工作?
这看起来充满魔法,但不仅仅是魔法,Python对with的处理还很聪明。基本思想是with所求值的对象必须有一个__enter__()方法,一个__exit__()方法。紧跟with后面的语句被求值后,返回对象的__enter__()方法被调用,这个方法的返回值将被赋值给as后面的变量。当with后面的代码块全部被执行完之后,将调用前面返回对象的__exit__()方法。下面例子可以具体说明with如何工作:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/env python
# with_example01.py
class
Sample:
def
__enter__(
self
):
print
"In
__enter__()"
return
"Foo"
def
__exit__(
self
,
type
, value, trace):
print
"In
__exit__()"
def
get_sample():
return
Sample()
with get_sample() as sample:
print
"sample:"
, sample
1
2
3
4
bash
-
3.2
$ .
/
with_example01.py
In __enter__()
sample: Foo
In __exit__()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/env python
# with_example02.py
class
Sample:
def
__enter__(
self
):
return
self
def
__exit__(
self
,
type
, value, trace):
print
"type:"
,
type
print
"value:"
, value
print
"trace:"
, trace
def
do_something(
self
):
bar
=
1
/
0
return
bar
+
10
with Sample() as sample:
sample.do_something()
1
2
3
4
5
6
7
8
9
10
bash
-
3.2
$ .
/
with_example02.py
type
: <
type
'exceptions.ZeroDivisionError'
>
value: integer division
or
modulo by zero
trace: <traceback
object
at
0x1004a8128
>
Traceback (most recent call last):
File
"./with_example02.py"
, line
19
,
in
<module>
sample.do_something()
File
"./with_example02.py"
, line
15
,
in
do_something
bar
=
1
/
0
ZeroDivisionError: integer division
or
modulo by zero
(转)
0 0
- python的with语句,超级强大
- python的with语句,超级强大
- python的with语句
- Python 的with 语句
- python的with语句
- Python 的 with 语句
- Python 的 with 语句
- 理解Python的With语句
- 理解Python的With语句
- 理解Python的With语句
- 理解Python的With语句
- 理解Python的With语句
- 理解Python的With语句
- 浅谈 Python 的 with 语句
- 浅谈 Python 的 with 语句
- 浅谈 Python 的 with 语句
- python的with语句浅析
- 理解Python的With语句
- python中input()与raw_input()的区别到底是啥?-----marsggbo原创作品为你解答
- python的try方法中的else和finally的区别
- linphone-去掉linphone的ContactsListFragment联系人界面
- python try/except/finally
- python安装图文教程---超详细。。。不过是转的,但有改动
- python的with语句,超级强大
- 解决win10 关键错误开始菜单和cortana无法工作 的问题(转-真的成功了)
- linux目录
- 这是对position讲解最通俗易懂的版本了。
- 数据建模讲解和案例分析
- 生日快乐~
- IDEA : Unable to save settings: Failed to save settings. Please restart IntelliJ IDEA解决办法
- python编码问题
- python3的urllib2报错问题解决方法