欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年Python语句、函数与方法的使用技巧总结 .pdf

    • 资源ID:40150967       资源大小:318.11KB        全文页数:18页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年Python语句、函数与方法的使用技巧总结 .pdf

    Python 语句、函数与方法的使用技巧总结显示有限的接口到外部当发布 python第三方 package时,并不希望代码中所有的函数或者class 可以被外部 import,在_init_.py 中添加 _all_属性,该 list 中填写可以 import的类或者函数名,可以起到限制的 import的作用,防止外部 import其他函数或者类。#!/usr/bin/env python#-*-coding:utf-8-*-from base import APIBase from client import Client from decorator import interface,export,stream from server import Server from storage import Storage from util import(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 的魔力名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 18 页 -with语句需要支持上下文管理协议的对象,上下文管理协议包含 _enter_和_exit_两个方法。with语句建立运行时上下文需要通过这两个方法执行进入和退出操作。其中上下文表达式是跟在with 之后的表达式,该表达式返回一个上下文管理对象。#常见 with 使用场景with open(test.txt,r)as my_file:#注意,是_enter_()方法的返回值赋值给了 my_file,for line in my_file:print line 知道具体原理,我们可以自定义支持上下文管理协议的类,类中实现_enter_和_exit_方法。#!/usr/bin/env python#-*-coding:utf-8-*-class MyWith(object):def _init_(self):print _init_ method def _enter_(self):名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 18 页 -print _enter_ method return self#返回对象给 as 后的变量def _exit_(self,exc_type,exc_value,exc_traceback):print _exit_ method if exc_traceback is None:print Exited without Exception return True else:print Exited with Exception return False def test_with():with MyWith()as my_with:print running my_with print-分割线-with MyWith()as my_with:print running before Exception raise Exception print running after Exception if _name_=_main_:test_with()执行结果如下:名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 18 页 -_init_ method _enter_ method running my_with _exit_ method Exited without Exception-分割线-_init_ method _enter_ method running before Exception _exit_ method Exited with Exception Traceback(most recent call last):File bin/python,line 34,in exec(compile(_file_f.read(),_file_,exec)File test_with.py,line 33,in test_with()File test_with.py,line 28,in test_with raise Exception Exception 证明了会先执行 _enter_方法,然后调用 with 内的逻辑,最后执行 _exit_做退出处理,并且,即使出现异常也能正常退出名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 18 页 -filter 的用法相对 filter 而言,map 和 reduce 使用的会更频繁一些,filter 正如其名字,按照某种规则过滤掉一些元素。#!/usr/bin/env python#-*-coding:utf-8-*-lst=1,2,3,4,5,6#所有奇数都会返回True,偶数会返回 False 被过滤掉print filter(lambda x:x%2!=0,lst)#输出结果1,3,5 一行作判断当条件满足时,返回的为等号后面的变量,否则返回 else 后语句。lst=1,2,3 new_lst=lst0 if lst is not None else None print new_lst#打印结果1 装饰器之单例使用装饰器实现简单的单例模式名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 18 页 -#单例装饰器def singleton(cls):instances=dict()#初始为空def _singleton(*args,*kwargs):if cls not in instances:#如果不存在,则创建并放入字典instancescls=cls(*args,*kwargs)return instancescls return _singleton singleton class Test(object):pass if _name_=_main_:t1=Test()t2=Test()#两者具有相同的地址print t1,t2 staticmethod装饰器类中两种常用的装饰,首先区分一下他们:普通成员函数,其中第一个隐式参数为对象classmethod装饰器,类方法(给人感觉非常类似于OC 中的类方法),其中第一名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 18 页 -个隐式参数为类staticmethod装饰器,没有任何隐式参数.python中的静态方法类似与C+中的静态方法#!/usr/bin/env python#-*-coding:utf-8-*-class A(object):#普通成员函数def foo(self,x):print executing foo(%s,%s)%(self,x)classmethod#使用 classmethod进行装饰def class_foo(cls,x):print executing class_foo(%s,%s)%(cls,x)staticmethod#使用 staticmethod进行装饰def static_foo(x):print executing static_foo(%s)%x def test_three_method():obj=A()#直接调用噗通的成员方法obj.foo(para)#此处 obj 对象作为成员函数的隐式参数,就是 self obj.class_foo(para)#此处类作为隐式参数被传入,就是 cls A.class_foo(para)#更直接的类方法调用名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 18 页 -obj.static_foo(para)#静态方法并没有任何隐式参数,但是要通过对象或者类进行调用A.static_foo(para)if _name_=_main_:test_three_method()#函数输出executing foo(,para)executing class_foo(,para)executing class_foo(,para)executing static_foo(para)executing static_foo(para)property装饰器定义私有类属性将 property与装饰器结合实现属性私有化(更简单安全的实现get 和 set 方法)。#python内建函数property(fget=None,fset=None,fdel=None,doc=None)fget 是获取属性的值的函数,fset 是设置属性值的函数,fdel 是删除属性的函数,doc 是一个字符串(像注释一样)。从实现来看,这些参数都是可选的。名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 18 页 -property有三个方法 getter(),setter()和 delete()来指定 fget,fset 和 fdel。这表示以下这行:class Student(object):property#相当于 property.getter(score)或者 property(score)def score(self):return self._score score.setter#相当于 score=property.setter(score)def score(self,value):if not isinstance(value,int):raise ValueError(score must be an integer!)if value 100:raise ValueError(score must between 0 100!)self._score=value iter 魔法通过 yield 和_iter_的结合,我们可以把一个对象变成可迭代的通过_str_的重写,可以直接通过想要的形式打印对象#!/usr/bin/env python#-*-coding:utf-8-*-class TestIter(object):def _init_(self):self.lst=1,2,3,4,5 名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 18 页 -def read(self):for ele in xrange(len(self.lst):yield ele def _iter_(self):return self.read()def _str_(self):return,.join(map(str,self.lst)_repr_=_str_ def test_iter():obj=T estIter()for num in obj:print num print obj if _name_=_main_:test_iter()神奇 partial partial使用上很像 C+中仿函数(函数对象)。在 stackoverflow给出了类似与 partial 的运行方式:def partial(func,*part_args):名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 18 页 -def wrapper(*extra_args):args=list(part_args)args.extend(extra_args)return func(*args)return wrapper 利用用闭包的特性绑定预先绑定一些函数参数,返回一个可调用的变量,直到真正的调用执行:#!/usr/bin/env python#-*-coding:utf-8-*-from functools import partial def sum(a,b):return a+b def test_partial():fun=partial(sum,2)#事先绑定一个参数,fun 成为一个只需要一个参数的可调用变量print fun(3)#实现执行的即是 sum(2,3)if _name_=_main_:test_partial()#执行结果5 名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 18 页 -神秘 eval eval 我理解为一种内嵌的python解释器(这种解释可能会有偏差),会解释字符串为对应的代码并执行,并且将执行结果返回。看一下下面这个例子:#!/usr/bin/env python#-*-coding:utf-8-*-def test_first():return 3 def test_second(num):return num action=#可以看做是一个 sandbox para:5,test_first:test_first,test_second:test_second def test_eavl():condition=para=5 and test_second(test_first)5 res=eval(condition,action)#解释 condition并根据 action 对应的动作执行print res 名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 18 页 -if _name_=_ exec exec 在 Python中会忽略返回值,总是返回 None,eval 会返回执行代码或语句的返回值exec 和 eval 在执行代码时,除了返回值其他行为都相同在传入字符串时,会使用 compile(source,mode)编译字节码。mode 的取值为 exec 和 eval#!/usr/bin/env python#-*-coding:utf-8-*-def test_first():print hello def test_second():test_first()print second def test_third():print third action=test_second:test_second,test_third:test_third def test_exec():exec test_second in action 名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 18 页 -if _name_=_main_:test_exec()#无法看到执行结果getattr getattr(object,name,default)返回对象的命名属性,属性名必须是字符串。如果字符串是对象的属性名之一,结果就是该属性的值。例如,getattr(x,foobar)等价于 x.foobar。如果属性名不存在,如果有默认值则返回默认值,否则触发AttributeError。#使用范例class TestGetAttr(object):test=test attribute def say(self):print test method def test_getattr():my_test=TestGetAttr()try:print getattr(my_test,test)except AttributeError:print Attribute Error!try:getattr(my_test,say)()except AttributeError:#没有该属性,且没有指定返回值的情况下名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 18 页 -print Method Error!if _name_=_main_:test_getattr()#输出结果test attribute test method 命令行处理def process_command_line(argv):Return a 2-tuple:(settings object,args list).argv is a list of arguments,or None for sys.argv1:.if argv is None:argv=sys.argv1:#initialize the parser object:parser=optparse.OptionParser(formatter=optparse.TitledHelpFormatter(width=78),add_help_option=None)#define options here:parser.add_option(#customized description;put-help last 名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 18 页 -h,-help,action=help,help=Show this help message and exit.)settings,args=parser.parse_args(argv)#check number of arguments,verify values,etc.:if args:parser.error(program takes no command-line arguments;%s ignored.%(args,)#further process settings&args if necessary return settings,args def main(argv=None):settings,args=process_command_line(argv)#application code here,like:#run(settings,args)return 0#success if _name_=_main_:status=main()sys.exit(status)读写 csv 文件#从 csv 中读取文件,基本和传统文件读取类似import csv with open(data.csv,rb)as f:名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 18 页 -reader=csv.reader(f)for row in reader:print row#向 csv 文件写入import csv with open(data.csv,wb)as f:writer=csv.writer(f)writer.writerow(name,address,age)#单行写入data=(xiaoming,china,10),(Lily,USA,12)writer.writerows(data)#多行写入各种时间形式转换只发一张网上的图,然后查文档就好了,这个是记不住的名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 18 页 -名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 18 页 -

    注意事项

    本文(2022年Python语句、函数与方法的使用技巧总结 .pdf)为本站会员(C****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开