• python复习


    本博文中含有来源多处的总结,没有能够将所有的来源引用

    python中删除list中的元素方法:remove,pop,del

    str=[1,77,8,0]

    remove:按值删除

    str.remove(8)

    pop:按索引删除,会返回被删除的元素

    str.pop(2)

    del:按索引删除,还可以删除指定范围内的值

    del str[2]

    del str[1:3]

    python中list赋值

    a=[23,242,9,0]
    b=a#a和b共享一块内存
    a[1]=87
    print(a)
    print(b)
    #[23, 87, 9, 0]
    #[23, 87, 9, 0]

    1) @classmethod

    用classmethod修饰表示这是一个类方法,如果没有用@classmethod修饰,则表示这是一个对象方法,使用时必须与一个对象绑定,如下

    class MyClass():
        def thisIsClassMethod(self):
            print "this is a class method"
    
    if __name__ == "__main__":
        c = MyClass()
        MyClass.thisIsClassMethod(c) #调用时传入参数c,否则编译错误

    如果采用@classmethod修饰,则不用传入参数c,可以用下面方式调用:

    class MyClass():
        @classmethod
        def thisIsClassMethod(cls,parameter):
            print "this is a class method"
            print cls.__name__
            print type(cls) #打印类型为classobj
    
    
    if __name__ == "__main__":
        MyClass.thisIsClassMethod(None) #不用与对象绑定
        print type(MyClass)
    

    2) property修饰符

    被property修饰符修饰的方法可以像属性一样被访问,如
     
    class MyClass:
        def __init__(self,num):
            self._Num = num
        @property
        def Num(self):
            return self._Num
    
    if __name__ == "__main__":
        c = MyClass(100)
        print c.Num   #注意,这里的访问形式看起来像是访问一个属性,但其实是一个方法

    3) staticmethod修饰符

    被staticmethod修饰符的表示这是一个类的静态方法,可以被类直接调用,与@classmethod的区别在于classmethod对应的方法的第一个参数为cls,为类的类型,而staticmethod不是
    如下:
    class MyClass:
        @staticmethod
        def thisIsStaticMethod():
            print "This is static method"
    
    if __name__ == "__main__":
        MyClass.thisIsStaticMethod()

    1、input和raw_input的区别

       input假设输入的都是合法的python表达式,如输入字符串时候,要加上引号,而raw_input都会将所有的输入作为原始数据

    2、原始字符串前面加上r,eg str=r"C:download java.txt",其中的转移字符 就不会被看成是换行符

    第二章 列表和元组

    1、列表左边index从0开始,右边从-1开始

    2、分片取左不取右,如nums[3:6],取3、4、5

    3、步长,nums[0:10:2],每次走2步,或者[8:3:-2]

    4、[42]*10    会生成[42,42,42....42]

    5、删除元素

       names=['hello','betch','cecil','fafda']

     del names[2]就会删除'cecil'元素

    6、插入元素

       nums=[1,5]

       nums[1:1]=[2,3,4]

     nums[1,2,3,4,5]

    7、append

       插入一个元素:

       lst=[1,2,3]

       lst.append(4)

       lst变成[1,2,3,4]

    8、count

        lst=['who','who','or','fada']

        lst.count('who')

       

    1、构造函数是私有的,为什么就不能创建实例

    私有函数限制在类的范围内,当然不能创建,new一个实例啦

     

    2、map和hash_map

    存储结构:map是红黑树,hash_map是hash

    构造函数:map只需要比较函数,hash_map需要hash函数

     

    3、c++11的特性

    a)auto关键字

    b)lambda表达式

    c)变长参数的模版,如:auto p = make_pair(1, "C++ 11");

    auto t2 = make_tuple(1, 2.0, "C++ 11", {1, 0, 2}); 

     Print(1, 1.0, "C++11");

     

    4、python闭包

    def func(name):

        def inner_func(age):

            print 'name:', name, 'age:', age

        return inner_func

     

    bb = func('the5fire')
    bb(26)  # >>> name: the5fire age: 26
    一个闭包就是你调用了一个函数A,这个函数A返回了一个函数B给你。这个返回的函数B就叫做闭包。你在调用函数A的时候传递的参数就是自由变量

     

     

    5、python闭包和装饰器

    python中的闭包

    def func(name):
        def inner_func(age):
            print 'name:', name, 'age:', age
        return inner_func
    bb = func('the5fire')
    bb(26)  # >>> name: the5fire age: 26
    一个闭包就是你调用了一个函数A,这个函数A返回了一个函数B给你。这个返回的函数B就叫做闭包。你在调用函数A的时候传递的参数就是自由变量。

     

    装饰器的存在主要是为了不修改原函数的代码,也不修改其他调用这个函数的代码,就能实现功能的拓展。

     

     在写代码时,一般不会轻易对已经实现的类或函数进行修改。为了扩充函数功能,可以使用修饰器。

    def w1(func):
    def inner(a,b):
    print("两个数之积:",a*b)
    func(a,b)
    return inner

    @w1
    def f1(a,b):
    print("两个数之和",a+b)

    f1(3,4)
    结果如下:
    两数之积: 12
    两数之和: 7

     python解释器就会从上到下解释代码,步骤如下:
    1.def w1(func): ==>将w1函数加载到内存
    2.@w1

    执行w1函数 ,并将 @w1 下面的函数作为w1函数的参数,即:@w1 等价于 w1(f1) 所以,内部就会去执行。将执行完的w1函数返回值 赋值 给@w1下面的函数的函数名f1,即将w1的返回值再重新赋值给 f1。些时的f1函数已经不是表面上看到的函数,而是增加了inner函数中的内容,函数功能得到了扩充。
  • 相关阅读:
    浏览器渲染原理
    前端日常工作性能优化条例
    前端的发展历程
    【YOLO-V1】You Only Look Once: Unified, Real-Time Object Detection
    ModuleNotFoundError: No module named 'keras_retinanet.utils.compute_overlap'
    python学习笔记:线性回归
    软件安装笔记5:navicat for mysql及其简单应用
    python学习笔记39:sklearn
    python学习笔记38:matplotlib
    python学习笔记37:pandas
  • 原文地址:https://www.cnblogs.com/wuxiangli/p/5649283.html
Copyright © 2020-2023  润新知