zoukankan      html  css  js  c++  java
  • 记录--方法/模块

    1. eval()

    class Abc:
    def a(self):
    return 1
    print(eval("Abc")().a())
    结果为1


    2.开闭原则

    对扩展开放,对修改封闭

    目的:实现可扩展性

    应用:装饰器,工厂模式

    如装饰器:在不改变原有代码的基础上,给其增加功能



    3.__getattr__系列、__getitem__系列的魔法方法

    __getitem__是在以字典的方式调用对象属性时被调用,如:obj[‘attr1’]

    __getattr__是对象直接调用属性时被调用,a.name


    4.partial(func,*agrs,**kwagrs)函数

    如:func = partial(get_name,18),则func()就等同于get_name(18)

    对于函数总是传入固定参数时,可以使用partial()


    5.__name__

    __name__是模块的一个内置属性

    模块运行时的__name__为“__main__”

    模块被导入时的 __name__为“模块名”

    故被导入模块的 ”””if __name__ == '__main__':””” 不成立,代码不会被执行,只执行当前运行模块的if代码

    (被导入模块的if相当于 ”””if module1.__name__ == '__main__':”””,而module1.__name__ 为”module1”)


    在多进程中,子进程运行入口必须在if…main中

    参考:https://stackoverflow.com/questions/34223502/why-does-this-multiprocessing-code-fail


    6.threading.local()

    众所周知,线程中的资源是共享的,那么,要怎么使得一个线程中的变量,其他线程无法调用呢

    通过local类:

    threading.local(),创建local对象

    local.x,为每个线程中都创建了一个x变量,线程间不共享变量,相互独立

    from threading import local

    loc = local()
    loc.x = 1   # 主线程中的x,与其他10个子线程相互独立,不能相互访问

    def func(i):

        loc.x = i    # 10个子线程中的x,相互独立

    for i in range(10):

        threading.Thread(target=func,(i,)) .start()

  • 相关阅读:
    图论-桥/割点/双连通分量/缩点/LCA
    未解决的问题
    hdu2586(LCA最近公共祖先)
    LCA最近公共祖先(least common ancestors)
    111
    poj1703 Find them, Catch them 并查集
    关于背包的注意事项
    codeforces343A A. Rational Resistance
    hdu(1171)多重背包
    HTML5事件—visibilitychange 页面可见性改变事件
  • 原文地址:https://www.cnblogs.com/justaman/p/11431887.html
Copyright © 2011-2022 走看看