我本人对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])}')
print(f'--end at:{str(_)}') print(f'--used time: {_ - self.lst[-1]}s\n') self.lst.pop() try: with manager_exectime() as et: time.sleep(0.5) with et: time.sleep(0.5) except Exception as ex: print(str(ex))

  

当using的情况下开拓新领域,dispose()用以释放非代管資源;

好像读取文件用完必须close ,文本框目标也必须自主消毁,连接数据库断掉等;

自然,还可以用try{}catch{}finally{}于finally中释放目标 ,

但using便是个语法糖嘛 。

上例编码主要是一个实行時间的监管,

必须留意的是,exit的入参是要求那样四个主要参数的 ,缺一个都并不是编译器鉴别的释放涵数。

 

 

本文版权归趣快排营销www.seoguRubloG.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系✚Qq61910465