Python中为什么推荐使用isinstance来进行类型判断?而不是type

Python在定义变量的时候不用指明具体的的类型,解释器会在运行的时候会自动检查 变量的类型,并根据需要进行隐式的类型转化。因为Python是动态语言,所以一般情 况下是不推荐进行类型转化的。比如"+"操作时,如果加号两边是数据就进行加法操 作,如果两边是字符串就进行字符串连接操作,如果两边是列表就进行合并操作,甚 至可以进行复数的运算。解释器会在运行时根据两边的变量的类型调用不同的内部方法。 当加号两边的变量类型不一样的时候,又不能进行类型转化,就会抛出TypeError的异常。

但是在实际的开发中,为了提高代码的健壮性,我们还是需要进行类型检查的。而进行 类型检查首先想到的就是用type(),比如使用type判断一个int类型。

import types
if type(1) is types.Integer:
    print('1是int类型')
else:
    print('1不是int类型')

上面的程序会输出:1是int类型

我们在types中可以找到一些常用的类型,在2.7.6中显示的结果:

types.BooleanType              #  bool类型
types.BufferType               #  buffer类型 …
more ...

使用Python生成二维码

现在有很多二维码的生成工具,在线的,或者安装的软件,都可以进行生成 二维码。今天我用Python的qrcode 生成二维码。

安装

用pip安装

pip install qrcode

使用源码安装

git clone git@github.com:lincolnloop/python-qrcode.git
cd python-qrcode
python setup.py install

查看安装信息

pip show qrcode

命令行

qrcode提供了生成二维码的命令,这个很符合程序员装逼的风格。

qr 'Some data' > test.png

我的简书上传的二维码就是用这个命令生成的

我的二维码

代码生成

首先需要导入qrcode模块,然后调用make方法,会生成一个图片对象,调用图片对象 的save方法就可以将生成的二维码保存下来了。

import qrcode
img …
more ...

Python内置函数总结

Python给我们提供了一些内置的函数,方便我们在开发中使用,这些函数一般都相对简单。 现在进行一个简单的总结。

Python版本: 2.7.11

abs(x)

求一个值的绝对值,参数必须是数字,不能是字符串或者是其他类型。

print(abs(1))
print(abs(0))
print(abs(-1))

all(iterable)

检测iterable中如果全是True,则返回True,如果有一个False则返回False,类似于下面 的实现。

def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True
more ...

Python字符串全面总结

前言

字符串是在编码过程中处理得最频繁的数据结构,Python为字符串提供了丰富的字符串处理的功能。

字符串格式化

在字符串中插入%开头的字符,如果%后面跟的是S则表示是字符。

world = "world"
print("Hello, %s" % world)

如果是数字,则%后面跟的是d,同时会自动四舍五入,去掉小数点之后的数据。

str1 = "version"
nu = 1.0
format = "%s %d" % (str, nu)
print(format)

浮点型后面跟的f默认情况下会保留六位小数,也可以指定小数点位数。

print("浮点型: %f" % 1.25)
print("浮点型保留一位小数: %.1f" % 1.25)
print("浮点型保留两位小数: %.2f …
more ...