编程语言
首页 > 编程语言> > 第03章 Python语言基础考察点

第03章 Python语言基础考察点

作者:互联网

Python语言特性


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

Python作为后端语言优缺点

为什么要用 Python?◆胶水语言,轮子多,应用广泛◆语言灵活,生产力高◆性能问题、代码维护问题、 python2/3兼容问题
动态语言一时爽,代码重构火葬场。

什么是鸭子类型

当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。◆关注点在对象的行为,而不是类型(duck typing)◆比如file, StringIO, socket 对象都支持read/write方法(file like object)◆再比如定义了__iter__魔术方法的对象可以用for迭代
鸭子类型更关注接口而非类型



class Duck:    def quack(self):        print("gua gua")

class Person:    def quack(self):        print("我是人类")

def in_the_forest(duck):    duck.quack()

def game():    donald = Duck()    john = Person()    in_the_forest(donald)    in_the_forest(john)    print(type(donald))    print(type(john))
if __name__ == '__main__':    game()


什么是 monkey patch

什么是 monkey patch?哪些地方用到了?自己如何实现?◆所谓的 monkey patch就是运行时替换◆比如 gevent库需要修改内置的 socket from gevent import monkey;monkey.patch_socket()
import socket

print(socket.socket)

print("After monkey patch")

from gevent import monkey

monkey.patch_socket()
print(socket.socket)

import select

print(select.select)
monkey.patch_select()
print("after monkey patch")
print(select.select)

# <class 'socket.socket'>
# After monkey patch
# <class 'gevent._socket3.socket'>
# <built-in function select>
# after monkey patch
# <function select at 0x03C3CE88>

import time

print(time.time()) # 1613097577.3560631


def _time():
return 1234


time.time = _time
print(time.time()) # 1234


什么是自省?

Introspection◆运行时判断一个对象的类型的能力◆ Python-切皆对象,用type,id, isinstance 获取对象类型信息◆ Inspect 模块提供了更多获取对象信息的函数
ll = [1, 2, 3]
d = dict(a=1)
print(type(ll))
print(type(d))

print(isinstance(ll, list))
print(isinstance(d, dict))



= 判断两个变量的值是不是相同is 判断内存地址是否相同
is None None 本身是单例


什么是列表和字典推导

List Comprehension◆ 比如[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之禅吗

The Zen of Python◆ Tim Peters 编写的关于 Python编程的准则◆ import this◆编程拿不准的时候可以参考

Python2/3差异常考题

使用 pyenv安装多版本 Python

Python3 改进

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








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


































s 创建一个新的对象 hehe 

指向的同一个对象


一切是对象对象引用的方式实参和形参指向同一个对象


不可变对象看起来 像是拷贝了一份  实则不是 是创建了一份
创建一个新的对象,让形参指向新的













Python异常机制常考题





CtrlC 也是异常捕捉不到

Python性能分析与优化GIL常考题


































python2 yield 的协程流畅的python









































标签:03,monkey,Python,patch,考察点,对象,print,socket
来源: https://www.cnblogs.com/wenyule/p/14404140.html