• python中的一些小技巧(持续添加)


    1.repr和str的区别

    repr创建一个字符串,以合法的python表达式的形式来表示值

    str转换为用户更易理解的形式的字符串,str是一种类型

    例如 

    print repr(1000L)
    1000L
    print str(1000L)
    1000

    2.input 和raw_input

    input会假设用户输入的是合法的python表达式,

    raw_input会把用户所有的输入当做原始的数据,即字面上的

    3.None,python中Null对象

    4.python中布尔值为False的对象有None,False,值为0的数,整型 浮点 长整型0,0.0+0.0j,“”,[],(),{}z

    没有__nonzero__()方法的对象默认值是true

    5.标准类型对象身份比较运算符 is,is not

    6.python会缓存简单整数

    7.Python的长整型能表达的数值仅仅与你的机器支持的虚拟内存大小有关,与编译语言的长整型概念不一样

    8.对整数的除法默认为地板除,浮点数执行真正的除法,//整除运算符

    9.divmod返回(商,余)coerce(num1,num2)将num1,num2转换为同一类型

    10.整数进制转换hex oct bin

    11.ASCII转换ord(chr) chr(num) unichr(num)

    12.random模块中的randrange(start,stop,step)随即返回之间的一项,uniform()和randint()一样,不过返回的是两者之间的一个浮点数,choice()随机返回序列中的一个元素

    13.“string”.translate(string.maketrans('',''),del=' ')根据给出的表转换string字符,del是过滤的字符

    14.那些可以改变对象值的可变对象的方法是没有返回值的如列表

    15.dict()创建字典,参数是可迭代的,那么每个可迭代的元素必须成对出现

    16.hash()可以用来判断某个对象是否可以做一个字典的键,字典的键必须是可哈希的

    17.字典常用方法dict.clear() get(key,default=None) has_key(key) items() keys() values() iteritems() iterkeys() itervalues() setdefault(key,default=None) update(dict2),iteritems() iterkeys() itervalues() 返回惰性赋值的迭代器,以节省内存 数据集很大的情况下

    18.字典必须每个键只能对应一个项,当键存在冲突,取最近的

    19.集合对象是一组无序排列的课哈希的值

    20。copy()方法比调用相应的工厂函数复制对象的副本要快

    21.直接迭代序列比通过索引迭代要快

    22.xrange()类似range()返回一个可迭代对象,用在for循环中

    21.迭代器限制:不能向后移动,不能回到开始,也不能复制一个迭代器,想再次迭代同一个对象,只能创建另一个迭代器对象

    22、itertools模块提供了各种有用的迭代器

    23.字典和文件是两个可迭代的Python数据类型,字典的迭代器会遍历它的键

    24.在迭代可变对象的时候修改它们并不是个好主意

    25.iter() 和实现__iter__() __next__()来创建迭代器

    26.生成器表达式是列表解析的一个扩展,在内存使用上更有效

    27.sum(),max()参数可以使生成器如:

    max(len(x.strip()) for i in f)

    28.sys.argv命令行参数列表,第一个元素时程序的名称

    29。os中文件目录访问函数和os.path中的路径访问函数

    30.永久性存储模块pickle marshal可以用来转换存储Python对象,数据的序列化。shelve功能能更完善

    31.__init__.py中加入__all__变量导入子包时指定导入的模块472

     32.实例的__dict__仅有实例属性,没有类属性和特殊属性500

     33.类和实例都是名字空间,类是类属性的名字空间,实例则是实例属性的名字空间

    34.任何对实例属性的赋值都会创建一个实例属性(如果不存在)并对其赋值。使用实例属性来改变类属性是很危险的。修改类属性应该使用类名

    35.__base__类属性 包含其父类的集合的元祖

    36.重写__init__不会覆盖自动调用基类的__init__ p383

    37. 从标准类型中派生类

    不可变类型的例子

    class RoundFloat(float):

      def __new__(cls,val):

        return super(RoundFloat,cls).__new__(cls,round(val,2))

    38.issubclass()判断一个类是否是另一个类的子类

    39.isinstance()判断一个对象是否是另一个类的实例

    40.hasattr(),getattr(),setattr(),delattr()

    41.super(type[,obj]) super是一个工厂函数,它创造了一个super object,为一个给定的类使用__mro__去查找相应的父类

    42.vars([obj])返回对象存储于__dict__的属性和值的字典,没有参数和locals()一样

    43.实现授权关键点是覆盖__getattr__()方法,在代码中包含一个对getattr()内建函数的调用,其工作方式是当搜索一个属性时,任何局部的对象首先被找到,如果搜索失败了,则__getattr__()会被调用

    44.新式类:__slots__类属性 类变量 是一个序列,有实例属性构成,任何试图创建一个不在__slots__中的名字的实例属性都将导致Attribute异常,防止用户随心所欲的添加实例属性,节约内存

    45.新式类:__getattribute__()与__getattr__()的不同之处在于,当属性被访问时,它就一直可以被调用,而不限于不能找到的情况

    46.描述符:表示对象属性的一个代理。描述符实际上可以是任何至少实现了三个特殊方法__get__()、__set__() __delete__()中的一个,这三个特殊方法充当描述符协议的作用。

    49.property(fget=None,fset=None,fdel=None,doc=None)

    50.元类 __metaclass__ 来定义某些类是如何被创建的,从根本上赋予你如何创建类的控制权。元类一般用于创建类

    51.callable()确定一个对象是否可以通过函数操作符来(())调用

    52.compile('code str','存放代码对象的文件的名字,通常为空串','eval/single/exec')允许在运行时刻迅速生成代码对象(字节代码预编译),然后就可以用exec 语句或内建函数eval()来执行这些对象或者对他们进行求值

    53.input()相当于eval(raw_input())

    ...

  • 相关阅读:
    Lock
    线程结束的正确方式
    MySQL字段自增自减的SQL语句
    PIE使用阴影后的背景透明方法
    CSS中RGBA的兼容方法以及透明度计算方法
    纯 CSS 实现三角形尖角箭头的实例
    浏览器 CSS 兼容写法的测试总结
    使用PIE对IE进行CSS3兼容介绍和经验总结
    Linux下安装vnstat流量统计
    Linux下nginx生成日志自动切割
  • 原文地址:https://www.cnblogs.com/aveenzhou/p/2674356.html
Copyright © 2020-2023  润新知