理解 Python 的元类

元类是一个深奥的OOP概念,几乎隐藏在所有Python代码之后。无论您是否知道,都在使用它们。在大多数情况下,您无需意识到这一点。大多数Python程序员很少(即使有的话)也不必考虑元类。

理解 Python 的装饰器

装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。

关于 Python 的一些面试题

Python 语言特性1 Python的函数参数传递看两个例子: 12345a = 1def fun(a): a = 2fun(a)print a # 1 12345a = []def fun(a): a.append(1)fun(a)print a # [1] 所有的变量都可以理解是内存中一个对象的“引用”,或者,也可以看似c中void*的感觉。 通过id来看引用a的内...

数据科学中的各种相似性度量及其实现

欧氏距离(Euclidean Distance)

欧氏距离(也称欧几里得度量)指在 m 维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from math import *
import numpy as np

def euclidean_distance(x, y):
# 方法一
# d = sqrt(sum(pow(a - b, 2) for a, b in zip(x, y)))

# 方法二
x, y = np.array(x), np.array(y)

# d = np.linalg.norm(x - y, ord=2)

d = np.sqrt(np.sum(np.square(x - y)))

return d


x = [1, 2, 3, 4, 5]
y = [6, 7, 8, 9, 10]
euclidean_distance(x, y) # 11.180339887498949

from scipy.spatial.distance import euclidean
euclidean(x, y) # 11.180339887498949

二叉树

LeetCode 二叉树题解汇总

Python 处理 Csv 文件常见错误

在用 Python 处理 csv 文件时遇到2个错误,记录下处理方法。

Centos 安装 PhantomJS

PhantomJS 已经不再开发了,Seleniumn 也警告使用 PhantomJS 是过时的,推荐使用 headless 版的 Chrome 或者 Firefox,但是有时候需要用到,够用就行,而且在 Linux 下安装也相对简单。

Python 通过 Thrift 操作 Hbase

记录 Python 通过 Thrift 操作 Hbase 的通用操作方法。

Asyncio 笔记

并发是指一次处理多件事。 并行是指一次做多件事。 二者不同,但是有联系。 一个关于结构,一个关于执行。 并发用于制定方案,用来解决可能(但未必)并行的问题。

——Rob Pike Go 语言的创造者之一

Selenium 在 Ubuntu 服务器上的使用

安装 chrome

1
2
3
4
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | sudo tee /etc/apt/sources.list.d/google-chrome.list
sudo apt-get update
sudo apt-get install google-chrome-stable