正文描述:《python语句、函数与方法的使用技巧总结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Python语句、函数与方法的使用技巧总结显示有限的接口到外部当发布python第三方package时,并不希望代码中所有的函数或者class可以被外部import,在__init__.py中添加__all__属性,该list中填写可以import的类或者函数名,可以起到限制的import的作用,防止外部import其他函数或者类。#!/usr/bin/envpython#-*-coding:utf-8-*-frombaseimportAPIBasefromclientimportClientfromdecoratorimportinterface,export,streamfro
2、mserverimportServerfromstorageimportStoragefromutilimport(LogFormatter,disable_logging_to_stderr,enable_logging_to_kids,info)__all__=['APIBase','Client','LogFormatter','Server','Storage','disable_logging_to_stderr','enable_logging_to_kids','export','info','interface','stream']with的魔力with语句需要支持
3、上下文管理协议的对象,上下文管理协议包含__enter__和__exit__两个方法。with语句建立运行时上下文需要通过这两个方法执行进入和退出操作。其中上下文表达式是跟在with之后的表达式,该表达式返回一个上下文管理对象。#常见with使用场景withopen("test.txt","r")asmy_file:#注意,是__enter__()方法的返回值赋值给了my_file,forlineinmy_file:printline知道具体原理,我们可以自定义支持上下文管理协议的类,类中实现__enter__和__exit__方法。#!/usr/bin/envpython#-*-
4、coding:utf-8-*-classMyWith(object):def__init__(self):print"__init__method"def__enter__(self):print"__enter__method"returnself#返回对象给as后的变量def__exit__(self,exc_type,exc_value,exc_traceback):print"__exit__method"ifexc_tracebackisNone:print"ExitedwithoutException"returnTrueelse:print"ExitedwithExc
5、eption"returnFalsedeftest_with():withMyWith()asmy_with:print"runningmy_with"print"------分割线-----"withMyWith()asmy_with:print"runningbeforeException"raiseExceptionprint"runningafterException"if__name__=='__main__':test_with()执行结果如下:__init__method__enter__methodrunningmy_with__exit__methodExited
6、withoutException------分割线-----__init__method__enter__methodrunningbeforeException__exit__methodExitedwithExceptionTraceback(mostrecentcalllast):File"bin/python",line34,inexec(compile(__file__f.read(),__file__,"exec"))File"test_with.py",line33,intest_with()File"test_with.py",lin
7、e28,intest_withraiseExceptionException证明了会先执行__enter__方法,然后调用with内的逻辑,最后执行__exit__做退出处理,并且,即使出现异常也能正常退出filter的用法相对filter而言,map和reduce使用的会更频繁一些,filter正如其名字,按照某种规则过滤掉一些元素。#!/usr/bin/envpython#-*-coding:utf-8-*-lst=[1,2,3,4,5,6]#所有奇数都会返回Tr
显示全部收起