在Python中进行编程时,有时我需要启动函数和对象方法,如下所示:
obj1.launch_method1(); // object method
do_something(); // general function
obj1.launch_method2(); // object method
使用with
语句,它将变为:
with obj1:
launch_method1();
do_something();
launch_method2();
在我看来,这会引起混乱,因为下一位程序员可能会错误地认为do_something()
是对象方法而不是通用函数。
最重要的是,大多数IDE都具有智能感知功能,因此当您键入obj1.
(注意点)时,会出现一个方法和属性列表,这使得键入obj1.launch_method1()
之类的东西非常容易。 ,obj1.launch_method2()
,...
因此,从程序员的角度来看,使用with
语句似乎没有优势。
但是,似乎with
语句启动了__enter__
和__exit__
调用,这似乎创建了新的上下文。那些电话是什么?这是什么意思? with
语句的用法有什么区别吗?如果是,那是哪一个?
答案 0 :(得分:2)
with语句是上下文管理器。这会负责构建和分解资源。
例如,如果您需要使用文件,则通常必须先打开文件,然后记得关闭它。 with open语句可以为您解决这个问题。
with open(“file.txt”) as file:
data = file.read() #Context of the file open
输入方法将打开文件退出,将其关闭。
现在看来,这似乎是付出很大的努力以获取少量收益,但考虑一个存在大量构建和崩溃的系统。您可以轻松地构建自己的上下文管理器。
例如打开套接字,握手,身份验证和授权都可以进入 enter 方法,然后将其全部分解为 Exit 方法
然后,它就像在需要时使用上下文一样简单