• Python知识总结(二)


    一、importreload__import__

    import是一个关键字,只引入一次
    reload是一个函数,参数为一个字符串,它总是会重新引入
    __import__是一个函数,与import关键字作用一样,它的好处就是可以动态引入包。因为import关键字后面只能跟确定的包名,而不能跟字符串参数,__import__可以在程序运行时确定引入哪一个包
    要使用reload函数,需要引入imp包。在python2中,reload是一个内置函数,在python3中移动到了imp模块中
    from imp import reload

    二、doc string

    以下代码意在告知如下知识点:

    • __all__跟dir(模块名)是一对
    • 在模块开头、类开头、函数开头,添加注释,即可使用help(module),help(className),help(functionName)查看doc string,也可以使用module.doc,fun.__doc__查看注释
    "main module"
    
    __all__ = ["A", "f"]
    
    
    class A:
        "this is class A"
    
        def haha(self):
            print("haha")
    
    
    def f():
        """
        F函数是最高级的函数
        """
        pass
    
    

    三、vars 、locals是内置函数,用于查看当前作用域内包含哪些东西

    四、类中定义变量是n+1份

    class A:
        cnt = 0
    
        def __init__(self):
            A.cnt += 1
            self.cnt = A.cnt
    a = A()
    print(a.cnt,A.cnt) #1,2
    b = A()
    print(a.cnt,b.cnt,A.cnt) #1,2,2
    a.cnt = 10
    print(a.cnt,b.cnt,A.cnt) #10,2,2
    

    上例中,类A、对象a、对象b中各维持一份cnt

    五、staticmethod和classmethod

    python中类有三种方法:实例方法、staticmethod、classmethod
    实例方法第一个参数必须是self参数,classmethod第一个参数必须是cls参数,staticmethod就跟普通的类外面的函数没啥区别
    三种函数有两个调用主体:类和对象
    类和对象都可以随便调用这三种方法。

    class A:
        def haha(self):
            print("haha")
    
        @classmethod
        def classHaha(cls):
            print("class haha")
    
    
    a = A()
    A.haha(a)  # 类调用实例方法
    a.classHaha()  # 实例调用类方法
    a.classHaha(A) #报错:classHaha只有一个参数
    

    六、异常

    try:
        pass
    except ZeroDivisionError:  # 捕捉一个错误
        pass
    except (ArithmeticError, FloatingPointError) as e:  # 捕捉多个错误,as e有没有都可以
        pass
    except:  # 捕捉全部异常,也可以写成except Exception as e以获取参数
        pass
    else:  # 如果没有异常抛出
        pass
    finally:  # 不管有没有异常
        pass
    

    七、动态函数参数

    Python库中常见的一种结构是def f(*args, **kargs),运行一个小例子立马就明白了

    """
    用*args,**kargs可以代表一切参数
    """
    
    
    def f(*args, **kargs):
        print(args, kargs)
    
    
    f("one", 1, 2, 3, one=1, two=2)
    
    • *args表示全部的不知名字的参数,**kargs表示全部的知道名字的参数。
    • 有名字的参数后面不能出现没名字的参数
    • *args会吃掉全部的没名字的参数
    • def f(usr,*args,**kargs)这种定义是合法的,usr只会吃掉第一个形参,args会吃掉它遇见的一切没名字的形参。
  • 相关阅读:
    mysql读写分离
    redis和memcached的区别(总结)
    MySQL常见面试题
    mysql查询优化
    mysql中enum类型
    ySQL性能优化的21个最佳实践 和 mysql使用索引
    如何选择mysql存储引擎
    Windows10右键添加"在此处打开命令窗口"
    centos7下安全访问远程服务器
    常用http/https以及socks5代理总结
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/6412553.html
Copyright © 2020-2023  润新知