
前言
本文只涉及Python相关的面试题,面向中高级Python开发,太基本的题目不收录。
更希望通过代码演示,原理探究等来深入讲解某一知识点,做到融会贯通。
另外部分演示代码有兴趣的可以找我拿。
语言基础篇
Python的基本数据类型
Python3 中有六个标准的数据类型:
- Number(数字)(包括整型、浮点型、复数、布尔型等)
- String(字符串)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
Python3 的六个标准数据类型中:
- 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
- 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
Python是静态还是动态类型?是强类型还是弱类型?
- 动态强类型语言(不少人误以为是弱类型)
- 动态还是静态指的是编译器还是运行期确定类型
- 强类型指的是不会发生隐式类型转换
js就是典型的弱类型语言,例如在console下面模拟一下数字和字符串相加,会发现发生了类型转换。

而Python会报TypeError

什么是鸭子类型
“当一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”
鸭子类型关注的是对象的行为,而不是类型。比如file,StringIO,socket对象都支持read/write方法,再比如定义了__iter__魔术方法的对象可以用for迭代。
下面用一个例子来模拟鸭子的类型:
pythonclass Duck:
def say(self):
print("嘎嘎")
class Dog:
def say(self):
print("汪汪")
def speak(duck):
duck.say()
duck = Duck()
dog = Dog()
speak(duck) # 嘎嘎
speak(dog) # 汪汪
什么是自省
自省是运行时判断一个对象类型的能力。
python一切皆对象,用type, id, isinstance获取对象类型信息。
自省,也可以说是反射,自省在计算机编程中通常指这种能力:检查某些事物以确定它是什么、它知道什么以及它能做什么。
与其相关的主要方法:
- hasattr(object, name)检查对象是否具体 name 属性。返回 bool.
- getattr(object, name, default)获取对象的name属性。
- setattr(object, name, default)给对象设置name属性
- delattr(object, name)给对象删除name属性
- dir([object])获取对象大部分的属性
- isinstance(name, object)检查name是不是object对象
- type(object)查看对象的类型
- callable(object)判断对象是否是可调用对象
python3和python2的对比
- print成为函数
- 编码问题。python3不再有unicode对象,默认str就是unicode
- 除法变化。python3除号返回浮点数,如果要返回整数,应使用//
- 类型注解


1850

被折叠的 条评论
为什么被折叠?



