Python基础---面试题汇总

Python基础---面试题汇总_第1张图片

前言

本文只涉及Python相关的面试题,面向中高级Python开发,太基本的题目不收录。

更希望通过代码演示,原理探究等来深入讲解某一知识点,做到融会贯通。

另外部分演示代码有兴趣的可以找我拿。

语言基础篇

Python的基本数据类型

Python3 中有六个标准的数据类型:

  • Number(数字)(包括整型、浮点型、复数、布尔型等)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Set(集合)
  • Dictionary(字典)

Python3 的六个标准数据类型中:

  • 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
  • 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

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

  • 动态强类型语言(不少人误以为是弱类型)
  • 动态还是静态指的是编译器还是运行期确定类型
  • 强类型指的是不会发生隐式类型转换

js就是典型的弱类型语言,例如在console下面模拟一下数字和字符串相加,会发现发生了类型转换。

Python基础---面试题汇总_第2张图片

而Python会报TypeError

Python基础---面试题汇总_第3张图片

什么是鸭子类型

“当一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”

鸭子类型关注的是对象的行为,而不是类型。比如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除号返回浮点数,如果要返回整数,应使用//
  • 类型注解。帮助IDE实现类型检

你可能感兴趣的:(Python,python,开发语言,面试,经验分享,程序人生)