• python基础和注意点概要2


    1. range和xrange
    xrange 用法与 range 完全相同,所不同的是生成的不是一个list对象,而是一个生成器。

    对生成器进行迭代时,元素是逐个被创建的。一般来看,在对大序列进行迭代的时候,因为xrange的特性,所以它会比较节约内存。


    2. 迭代
    可迭代对象(iterable):可以直接作用于for循环的对象
    迭代器(itertor): 可以被next()函数调用并不断返回下一个值的对象
    可迭代对象 -> iter() -> 迭代器 -> next()

    列表推导式:mylist = [x*x for x in range(3)]


    生成器是一种特殊的迭代器,两种方式:
    1)生成器函数
    使用yield语句而不是return语句返回结果;
    yield语句一次返回一个结果,在每个结果中间,挂起函数的状态,以便下次重它离开的地方继续执行

    在执行过程中,遇到yield就中断,下次又继续执行

    把函数改成generator后,我们基本上从来不会用next()来调用它,而是直接使用for循环来迭代,比如

    for n in fib(6):
         print n

    2)生成器表达式
    类似迭代器中的列表推导式,只不过用()代替[]
    mygenerator = (x*x for x in range(3))

     3/5

    1. __init__和__new__
    实例化一个类时:
    __init__是在类实例创建之后调用,而 __new__方法正是创建这个类实例的方法。

    __new__的作用:
    当你继承一些不可变的class时(比如int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径
    比如需要一个永远都是正数的整数类型:
    对于int这种 不可变的对象,我们只有重载它的__new__方法才能起到自定义的作用。
    class PositiveInteger(int):
    def __new__(cls, value):
    return super(PositiveInteger, cls).__new__(cls, abs(value))
    i = PositiveInteger(-3)
    print i # 3


    2. 回调函数
    #回调函数
    def double(x):
    return x*2

    def quadruple(x):
    return x*4

    #中间函数
    def middle(k, middleMethod):
    return 1 + middleMethod(k)

    #程序入口
    i = middle(4,double)
    print i

    i = middle(4,quadruple)
    print i


    3. 单例模式
    确保某一个类只有一个实例存在

    使用模块

    使用 __new__
    https://www.cnblogs.com/loveyouyou616/p/7440064.html

    使用装饰器(decorator)
    http://blog.csdn.net/linshengchao123/article/details/47775383

    使用元类(metaclass)


    4.实例方法/类方法/静态方法
    实例方法有self参数,类方法有cls参数,静态方法是不需要这些附加参数的。

    静态方法不能访问类变量和实例变量;
    使用静态方法的好处是,不需要定义实例即可使用这个方法。另外,多个实例共享此静态方法。

    class Person:
    grade=1
    def __init__(self,name):
    self.name = name
    def sayHi(self):#加self区别于普通函数
    print 'Hello, your name is?',self.name

    @staticmethod #声明静态,去掉则编译报错;还有静态方法不能访问类变量和实例变量
    def sayName():#使用了静态方法,则不能再使用self
    print "my name is king"#,grade,#self.name

    @classmethod #类方法
    def classMethod(cls):
    print("class method")

    p = Person("king")
    p.sayHi()
    p.sayName()
    p.classMethod()
    Person.classMethod()

    输出:
    Hello, your name is? king
    my name is king
    class method
    class method


    5.闭包函数
    在一个函数的内部定义了另一个函数,外部的我们叫他外函数,内部的我们叫他内函数。
    内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包。
    https://www.cnblogs.com/Lin-Yi/p/7305364.html

    6.字典排序

    d = [('a', 1), ('b', 22), ('c', 3)]
    dict(sorted(d.items(),key=lambda x:x[1],reverse = True))

    7. 占位符
    整数占位符:%d
    浮点数占位符:%f # %.xf 则是精确至小数点后x位
    字符串占位符:%s

  • 相关阅读:
    DS博客作业02—线性表
    DS博客作业01--日期抽象数据类型
    c语言第六次作业---结构体&文件
    c语言博客05--指针
    c语言博客作业04--数组
    DS博客作业08-课程总结
    DS博客作业07--查找
    DS博客作业06--图
    DS博客作业-05--树
    DS-博客作业03--栈和队列
  • 原文地址:https://www.cnblogs.com/stellar/p/8493966.html
Copyright © 2020-2023  润新知