zoukankan      html  css  js  c++  java
  • python基础题目~综合

    一 python的元类是什么

         __metaclass__ - python一切皆对象.类也是对象的一种.元类是创造类的类,python的内置元类是python 任何定义类的行为(class关键字)都是type实例化的结果

         通过__class__.__class__ 查看类属性最终看到type 一般的类都继承object,那object的父类其实就是type

    二 python 深浅拷贝

        普通复制 两者都指向同一内存区域  父类和子类对象修改都会影响

        浅拷贝   复制父类对象不同内存空间,但是两者子类还是指向同一内存空间 子类空间修改会影响

        深度拷贝  复制父类对象和字类对象到不同内存空间,都进行了独立,互不影响

    三 GIL  global lock

         python的多线程其实是伪多线程,同一时间只有一个线程在跑,GIL锁定其线程的资源.下一个线程如果想运行,则需要申请GIL锁 只存在于通过C语言实现的Python解释器上

         而python的多进程就没有这个问题.实现了真正意义的并发

        多线程和多进程在理论上都可以用到多核心

    四 pyc文件

       当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当python程序运行结束时,python解释器则将PyCodeObject写回到pyc文件中。当第二次执行时.会直接跳过编译阶段.使用pyc文件

       什么情况下会生成pyc文件呢 

       1 单纯的脚本自调用并不会生成pyc文件 单纯的引用已经安装好的模块也不会生成pyc文件(因为已经预编译好了)

       2 调用另一个自定义py文件(函数,类) 会生成pyc文件  也可以可以通过python -m 命令 或者在代码中调用py_compile模块生成

       python2会生成pyc , python3 是 __pycache__/ 下生成

    五  常用的状态码

       200 正常 403 禁止访问 401权限问题 404 网页未找到 500 代码错误 301 永久重定向

    六 回调函数

       简单来说就是定义一个函数,然后将这个函数的函数名传递给另一个函数做参数(函数指针),以这个参数命名的函数就是回调函数。   回调函数本身是在合适的时机调用处理某些情况,并非立刻就调用  常见的异步处理情况场景处理需要回调函数进行结果处理工作

       下面是一个例子

    def my_callbcak(args):
    print(*args)
    def caller(args, func):
    func(args)
    caller((1,2), my_callbcak)
    七 装饰器
    1 作用 也即是好处 就是不改变函数代码情况下,针对函数进行装饰,增加额外的功能
    2 最后返回的本体是被装饰的函数对象
    3 可以通过语法糖调用,通过语法糖调用之后再定义新函数,这时候调用的新函数就被装饰了
    4 不含参数的装饰器只需要被装饰对象即可,参数是函数对象,如果需要额外的外部变量,还需要增加一层函数对象.参数是自定义的变量.换句话说至少三层.无参是至少二层
    5 常见的场景 日志记录 登录和权限认证 执行时间统计等通用的场景
    6  具体的流程
       1 定义装饰器-装饰器内调用函数体+增加额外功能  2  语法糖调用装饰器 3 定义实体函数 4  调用实体函数
    一个带参的登录验证装饰器
       def auth(user_info):
           def decorator(func):
             def wrapper(*args,**kwargs):
               if user_info=='teacther':
                  return wrapper(*args,**kwargs)
             else:
                  return wrapper结束
          return decorator
     @auth('user_info')
      func 登录
    在被装饰内函数用登录调用.这样用户在登录的时候就会多了一个验证身份的作用



  • 相关阅读:
    vector与iterator的一些用法
    动态规划 hdu 1024
    dfs bfs hdu 1045
    hdu 2795
    poj 2828
    线段树染色
    线段树比大小
    A
    ?线程局部变量
    JRE、JDK、JVM 及 JIT
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/14963391.html
Copyright © 2011-2022 走看看