python面试之基础

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

1.动态强类型语言(不少人误认为是弱类型);
2.动态还是静态指的是编译期还是运行期确定类型;
3.强类型指的是不会发生隐式类型转换;

2. python作为后端语言的优缺点,如为啥要用python?

1.胶水语言,轮子多,应用广泛;
2.语言灵活,生产力高;
3.性能问题,代码维护问题,python 2/3 兼容问题;

3. 什么是鸭子类型?

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

1. 关注点在对象的行为,而不是类型(duck typing);
2. 比如 file, stringIO, socket 对象都支持readl/write方法(file like object);
3. 再比如定义了 __Iter__ 魔法方法的对象可以用for 迭代;

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

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

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

5. 什么是自省?(Introspection)

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

6. 什么是列表和字典推导?

1. 比如 [i for i in range(10) if i % 2 == 0] ;
2. 一种快速生成dict/list/set 的方式,用来代替 map/filter等;
3. (i for i in range(10) if i % 2 == 0)返回生成器;

demo:


image.png

image.png

7.知道python之禅吗?

1. Tim Peters 编写的关于python编程的准则;
2. import this
3. 编程拿不准的时候可以参考;

8. python 2/3 的差异有哪些?

使用pyenv 安装多版本python


image.png

python3的改进

1. print成为函数
2. 编码问题,python3不再有Unicode对象,默认str 就是unicode
3. 除去变化。 python3除号返回浮点数;
4. 类型注解(type hint) 帮助IDE实现类型检查;
5. 优化的super()方便直接调用父类函数;
6.高级解包操作;a, b, *rest = range(10);
7. Keyword only arguments, 限定关键字参数;
8. Chained exceptions, python3 重新抛出异常不会丢失栈信息;
9. 一切返回迭代器, range, zip ,map , dict.values, etc , are all iterators;
10. 生成的pyc文件统一放到了__pycache__;
11. 一些内置库的修改,urllib, selector等;
12. 性能优化等等;

image.png

image.png

image.png

image.png

python3新增

1. yield from 链接子生成器;
2. asyncio内置库, async/await 原生协程支持异步编程;
3. 新的内置库, enum, mock ,asyncio, ipaddress, councurrent.futures 等;

9. 熟悉一些兼容python 2/3的工具

1. six模块;
2. 2to3 等工具转换代码;
3. __futrue__;

10. 一下python代码分别输出什么?

  • 可变类型作为参数
def flist(l):
    l.append(0)
    print(id(l))
    print(l)


ll = []
print(id(ll))
flist(ll)
flist(ll)

# 输出结果:
1666522285320
1666522285320
[0]
1666522285320
[0, 0]
  • 不可变类型作为参数
def fstr(s):
    s += 'a'
    print(id(s))
    print(s)


ss = 'hehe'
print(id(ss))
fstr(ss)
fstr(ss)

# 输出结果:
1452230375160
1452230377064
hehea
1452230377064
hehea
[1, 2, 3]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def...
    伊森H阅读 8,189评论 0 15
  • 另一种如下:
    伏特加阅读 5,069评论 2 0
  • 梦醒柔荑探锦衾 懵懵懂懂 便有寒风抚一阵 卧看榻边伴我犬 哈哈轻笑出 怪己爱梦懒庭前 望窗外阴天一片 唉~ 迟时起...
    清九似猫阅读 3,251评论 0 8
  • 每天开始写字的时候都特别开心 生活的味道,这就是最本质的生活 六点三刻闹钟响起,我照常起床,看看今天是晴天还是阴天...
    瓜田田的小世界阅读 1,241评论 0 0
  • 依然是三角形练习。 今天全是临的,没有原创,因为没心情。 假期就这样忙过去了,工作还是没有完成,有点焦躁。所幸剩的...
    春风和煦2020阅读 1,150评论 0 0