搞定笔试 | 搞定笔试题 - 第 003 期

简介: 搞定笔试 | 搞定笔试题 - 第 003 期

什么是鸭子类型?

当看到一只鸟,走起来像鸭子、游泳起来像鸭子、叫起来像鸭子那么这只鸟就可以被称之为鸭子

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

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

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

  • 所谓猴子补丁就是运行时替换
  • gevent库需要修改内置的socket

from gevent import monkey;monkey.patch_socket()

  • 自己实现猴子补丁:
import time
print(time.time())
def _time():
return 1234
time.time = _time
print(time.time)

什么是自省?

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

什么是列表或字典推导?

  • 类似: [i for i in range(10) if i % 2 == 0]
  • 一种快速生成list/dict/set的方法,用来替代 map/filter
    python<br />a = [1,2,3]<br />b = ['a','b','c']<br />d = {k:v for k,v in zip(b,a)}<br />print(d)<br />
  • 返回生成器: (i for i in range(10) if i % 2 == 0)

Python2/3的差异点

  • print 成为函数
  • 编码问题,Python3不再有Unicode对象,默认str就是Unicode
Unicode(给人看的) -> encode -> 字节串(给计算机看的)
传输的时候使用字节串,操作的时候使用Unicode
  • Python3除法返回浮点数
  • 类型注解
def hello(name: str) -> str:
return 'hello' + name
  • 优化的super()方便调用父类函数
  • 高级解包操作: a, b, *res = range(10)
  • 限定关键词参数
  • Python3重新抛出异常不会丢失栈信息(raise from)
  • 一切返回迭代器:range, zip, map, dict.values
  • yield form 链接子生成器
  • asyncio内置库,asyn/await 原生协程支持异步编程

兼容Python2/3的工具

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


相关文章
|
JavaScript 应用服务中间件 nginx
vuecli3打包项目上线之后报错怎么使用本地的sourcemap文件定位调试?
vuecli3打包项目上线之后报错怎么使用本地的sourcemap文件定位调试?
317 0
|
6月前
|
关系型数据库 Linux 数据库
2025 年 Odoo 安装与部署全攻略
本文介绍了 Odoo 的手工安装与自动化部署方案。手工安装需完成 Docker 安装、镜像拉取及容器运行,但存在安装复杂、配置困难、管理繁琐等问题。Websoft9 提供了自动化部署方案,通过控制台实现快速创建数据库、初始化环境和后台配置,大幅降低技术门槛,将部署时间从 2 小时缩短至 10 分钟。对比显示,Websoft9 在时间成本、技术要求和稳定性上更具优势,适合中小团队使用,助力企业聚焦业务流程优化。
1275 1
|
11月前
|
Kubernetes 负载均衡 调度
Docker Swarm 核心概念及详细使用
Docker Swarm 是 Docker 的原生集群管理工具,用于将多个 Docker 主机整合成一个虚拟主机,提供集群管理和调度功能。其核心特点包括集群管理、容错与高可用性、负载均衡、声明式服务模型、服务发现和安全性。本文档详细介绍了 Docker Swarm 的安装配置、服务部署、节点管理、网络配置及故障模拟等关键操作,适用于中小型项目或对 Kubernetes 复杂性有所顾虑的用户。
830 6
|
监控 druid 数据库连接
数据库连接池选择:HikariCP vs Druid
数据库连接池选择:HikariCP vs Druid
|
12月前
|
C语言
保姆级教学 - C语言 之 动态内存管理
保姆级教学 - C语言 之 动态内存管理
80 0
switch的使用细节
switch的使用细节
138 0
|
缓存 算法 测试技术
【单调栈】【二分查找】LeetCode: 2454.下一个更大元素 IV
【单调栈】【二分查找】LeetCode: 2454.下一个更大元素 IV
阿里巴巴开发手册“泰山”版它来了,1.4.0+终极版+阿里内部PPT
阿里的《Java开发手册》距离上次发布已经过去了 10 个月了,而这次发布也增加了很多干货内容,比如:新增 34 条规约,修改描述 90 处,其中错误码规则更是第一次提出完整的解决方案,发布日志如下图所示:
|
弹性计算 安全 Linux
阿里云服务器搭建宝塔Linux面板流程(新手教程)
阿里云服务器搭建宝塔Linux面板流程(新手教程)阿里云服务器网以CentOS操作系统为例,安装宝塔Linux面板,先远程连接到云服务器,然后执行宝塔面板安装命令,系统会自动安装宝塔面板,安装完成后会返回面板地址、账号和密码,然后在安全组开通宝塔面板端口号
8798 2
阿里云服务器搭建宝塔Linux面板流程(新手教程)
|
算法 计算机视觉
OpenCV高级图像处理学习笔记
OpenCV高级图像处理学习笔记