• python学习之with...as语句


    python中的with...as...语句类似于try...finally...语句:

    # -*- coding: utf-8 -*-
    #
    """
    with...as...语句
    """
    #try...finally...语句
    f = open('data.txt')
    try:	
    	data = f.read()
    	print(data)
    finally:
    	f.close()
    #with...as...语句
    with open('data.txt') as f:
    	data = f.read()
    	print(data)
    
    hello,leo!
    
    hello,leo!
    
    [Finished in 0.1s]

    从上面可以看出,with...as语句看起来更为简洁。

    原理

    1.表达式执行并返回一个对象A

    2.对象A调用__enter__()

    3.__enter__()将返回对象B赋值给变量C

    4.等表达式全部执行完毕,对象A调用__exit__()方法

    下面来看一个例子:

    # -*- coding: utf-8 -*-
    #
    """
    with...as...语句
    """
    class Example:
    	def __enter__(self):
    		print('In__enter__()')
    		return "Over!"
    	def __exit__(self,*args):
    		print('In__exit__()')
    		return "Exit!"
    def get_example():
    	return Example()
    
    with get_example() as example:
    	print(example)
    

     结果:

    In__enter__()
    Over!
    In__exit__()
    [Finished in 0.1s]

    分析:

    1.表达式get_example()执行并返回对象Example()

    2.对象Example()调用__enter__()方法

    3.__enter__()方法将返回对象"Over!"赋值给变量example

    4.对象Example()调用__exit__()方法

  • 相关阅读:
    反射的概述_反射应用实例
    日期类之SimpleDateFormat
    StringBuffer & StringBuilder
    String与包装类_字节数组_字符数组间的转换
    两种方法k8s安装dashboard组件
    git学习
    Prometheus搭建
    python学习博客
    Python的全局变量和局部变量
    python参数
  • 原文地址:https://www.cnblogs.com/leomei91/p/7611888.html
Copyright © 2020-2023  润新知