欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python学习

程序员文章站 2022-06-18 16:08:01
学习python中as的用法 对于文件操作,正常的操作方法是: filename = raw_input("please enter you filename:") # open and exceptiontry: fs = open(filename)except: print "open fil ......

学习python中as的用法

对于文件操作,正常的操作方法是:

filename = raw_input("please enter you filename:")

# open and exception
try:
    fs = open(filename)
except:
    print "open file %s failed" % filename
    exit(-1)

# read file
data = fs.read()

print "file data %s" % data

# close file
fs.close()

 

为了简化操作,可以通过as取代打开文件的except部分和关闭文件,简化写法:

filename = raw_input("please enter you filename:")

with open(filename) as fs:
    data = fs.read()

print "file data %s" % data

 

原理:

紧跟with后面的语句被求值后,返回对象的 __enter__() 方法被调用,这个方法的返回值将被赋值给as后面的变量。

当with后面的代码块全部被执行完之后,将调用前面返回对象的 __exit__()方法。

扩展:

C++中比较头疼的是内存泄露问题,如果使用new动态申请内存,需要时刻记得delete回收内存,避免发生内存泄露。

对于分支很多的代码来讲,在多个分支进行内存释放很容易产生遗漏,排查代码非常浪费时间。

为了避免这种情况,C++采用智能指针的方式进行内存管理,智能指针本身就是一个类,在类的对象超出作用域范围时,会自动调用析构函数。

因此,只需要在析构函数中完成内存的释放即可,非常方便,智能指针内容详见下一篇笔记。