我本人对python的学习培训沒有那麼系统软件,一开始想更新改造引入的类库 ,察觉自己被一些英语的语法难题卡屏,高效率就低了。
因此就很想看看C#与python的较为,觉得那样切語言融入起來会更加舒服一些 ,我就自身写吧 。
买来一本书《深入理解Python特性》,嗯我总感觉这些像词典一样的书确实无法提高在学习上兴趣爱好,这本书就很有意思 ,我就非常喜欢小编像与你闲聊一样详细介绍“有意思的事儿”那样的blog体。
前后文管理器 |
|
C# |
Python |
using(variable) {..} |
with variable: … |
IDispose
|
__enter__ __exit__ |
using句子中应用的种类务必可隐式变换为 ”System.IDisposable” using括弧内应当放一个完成了IDispose插口的自变量 , 下示一简易事例:
|
with后接的自变量必须完成: __enter__和__exit__ 相比C#用复位来操纵前后文管理器的“开”, 我认为用独立的enter来操纵会有效些。 |
using static System.Console; public class testDecorator : IDisposable { public testDecorator() { WriteLine("----------start----------"); } public void Dispose() { WriteLine("---------- end ----------"); } } using (var td = new testDecorator()) { WriteLine($"{DateTime.Now.ToString("yyyyMMddHHmmss")}"); }
|
import time class manager_exectime(): def __init__(self): self.lst = [] def __enter__(self): self.lst.append(time.time()) return self def __exit__(self, exc_type, exc_val, exc_tb): _ = time.time() print(f'--started at:{str(self.lst[-1])}')
|
当using的情况下开拓新领域,dispose()用以释放非代管資源; 好像读取文件用完必须close ,文本框目标也必须自主消毁,连接数据库断掉等; 自然,还可以用try{}catch{}finally{}于finally中释放目标 , 但using便是个语法糖嘛 。 |
上例编码主要是一个实行時间的监管, 必须留意的是,exit的入参是要求那样四个主要参数的 ,缺一个都并不是编译器鉴别的释放涵数。
|
本文版权归趣快排营销www.seoguRubloG.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系✚Qq61910465