美文网首页
python面试题

python面试题

作者: _不辞而别 | 来源:发表于2019-04-14 09:32 被阅读0次

    python语言特性

    python是静态还是动态类型?是强类型还是弱类型?

    • 动态强类型语言
    • 动态还是静态指的是编译期还是运行期确定类型
    • 强类型指的是不会发生隐式类型转换

    python作为后端语言优缺点

    为什么要用python

    • 胶水语言,轮子多,应用广泛
    • 语言灵活,生产力高
    • 性能问题、代码维护问题、python2/3兼容问题

    什么是鸭子类型

    • 关注点在对象行为,而不是类型
    • 比如file, StringIO,socket对象都支持read/write方法(file like object)
    • 再比如定义了iter魔术方法的对象可以用for迭代

    鸭子类型更关注接口而非类型

    什么是monkey patch

    什么是monkey patch? 那些地方用到了?自己如何实现?

    • 所谓的monkey patch就是运行时替换
    • 比如gevent库需要修改内置的socket
    • from gevent import monkey; monkey.patch_socket()

    什么是自省?

    introspection

    • 运行时判断一个对象的类型的能力
    • python 一切皆对象,用type, id, isinstance获取对象类型信息
    • inspect模块提供了更多获取对象信息的函数

    什么时列表和字典推导

    • 比如返回列表
    [i for i in range(10) if i % 2 == 0]
    
    • 一种快速生成list/dict/set的方式。用来替代map/filter等

    • 返回生成器

    (i for i in range(10) if i % 2 == 0)
    

    python之禅

    • Tim Peters 编写的关于python编程准则
    • import this看到
    • 编程拿不准的时候可以参考

    python2/3差异常考题

    python改进

    • print成为函数
    • 编码问题。python3不再有Unicode对象,默认str就是unicode
    • 除法变化。python3除号返回浮点数

    python3改进

    • 类型注解(type hint)。帮助IDE实现类型检查
    • 优化的super()方便直接调用父类函数
    • 高级解包操作。a,b,*rest = range(10)

    python3改进

    • 限定关键词参数
    def add(a,b, *, c):
      return a+b+c
    add(1,2, c=3)# c=3必须这么写
    
    • python3重新抛出异常不会丢失栈信息
      raise from OSError
    • 一切返回迭代器 range,zip,map,dict,values,etc都是迭代器(节省内存)

    python3新增

    • yield from 链接子生成器
    • asyncio内置库, async/await原生协程支持异步编程
    • 新的内置库enum, mock, asyncio, ipaddress, concurrent.futures等
    • 生成的pyc文件统一放到pycache
    • 一些内置库的修改, urllib,selector等
    • 性能优化

    兼容python2/3工具

    • six模块
    • 2to3等工具转换代码
    • future

    相关文章

      网友评论

          本文标题:python面试题

          本文链接:https://www.haomeiwen.com/subject/oyorwqtx.html