第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 本身是单例第03章 Python语言基础考察点


什么是列表和字典推导

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)    返回生成器
第03章 Python语言基础考察点
第03章 Python语言基础考察点



知道 Python之禅吗

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

Python2/3差异常考题

使用 pyenv安装多版本 Python

Python3 改进

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

第03章 Python语言基础考察点
第03章 Python语言基础考察点

第03章 Python语言基础考察点



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

第03章 Python语言基础考察点
第03章 Python语言基础考察点
第03章 Python语言基础考察点

第03章 Python语言基础考察点


第03章 Python语言基础考察点


第03章 Python语言基础考察点
第03章 Python语言基础考察点第03章 Python语言基础考察点第03章 Python语言基础考察点
第03章 Python语言基础考察点
第03章 Python语言基础考察点

第03章 Python语言基础考察点
第03章 Python语言基础考察点


第03章 Python语言基础考察点
第03章 Python语言基础考察点


第03章 Python语言基础考察点
第03章 Python语言基础考察点
第03章 Python语言基础考察点
第03章 Python语言基础考察点

第03章 Python语言基础考察点

第03章 Python语言基础考察点
第03章 Python语言基础考察点
第03章 Python语言基础考察点
s 创建一个新的对象 hehe 

指向的同一个对象

第03章 Python语言基础考察点
一切是对象对象引用的方式实参和形参指向同一个对象


不可变对象看起来 像是拷贝了一份  实则不是 是创建了一份
创建一个新的对象,让形参指向新的第03章 Python语言基础考察点
第03章 Python语言基础考察点


第03章 Python语言基础考察点
第03章 Python语言基础考察点
第03章 Python语言基础考察点
第03章 Python语言基础考察点
第03章 Python语言基础考察点





Python异常机制常考题



第03章 Python语言基础考察点第03章 Python语言基础考察点第03章 Python语言基础考察点第03章 Python语言基础考察点第03章 Python语言基础考察点第03章 Python语言基础考察点

CtrlC 也是异常捕捉不到

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

第03章 Python语言基础考察点


第03章 Python语言基础考察点

第03章 Python语言基础考察点

第03章 Python语言基础考察点
第03章 Python语言基础考察点
第03章 Python语言基础考察点
第03章 Python语言基础考察点第03章 Python语言基础考察点
第03章 Python语言基础考察点第03章 Python语言基础考察点第03章 Python语言基础考察点



第03章 Python语言基础考察点第03章 Python语言基础考察点第03章 Python语言基础考察点
第03章 Python语言基础考察点
第03章 Python语言基础考察点

第03章 Python语言基础考察点
第03章 Python语言基础考察点
第03章 Python语言基础考察点
第03章 Python语言基础考察点

第03章 Python语言基础考察点
第03章 Python语言基础考察点

第03章 Python语言基础考察点


第03章 Python语言基础考察点
第03章 Python语言基础考察点
第03章 Python语言基础考察点
python2 yield 的协程流畅的python
第03章 Python语言基础考察点

第03章 Python语言基础考察点

第03章 Python语言基础考察点
第03章 Python语言基础考察点
第03章 Python语言基础考察点第03章 Python语言基础考察点
第03章 Python语言基础考察点
第03章 Python语言基础考察点
第03章 Python语言基础考察点

第03章 Python语言基础考察点

第03章 Python语言基础考察点

第03章 Python语言基础考察点

























上一篇:组件的本质


下一篇:MATLAB绘制3D隐函数曲面的几种方法