Python的几个知识点

Python的几个知识点

最近博主学到了几个Python中比较重要的几个知识点,写篇博客记录一下。

==和is的区别

虽然之前大概知道==is的区别,但是一直感觉模模糊糊,今天写代码的时候恰巧遇到了这个问题,就去查了一些资料,明确了一下。

==运算符用与判断两个变量所引用的对象的值是否相等,is则是判断两个变量引用的是否是同一个对象。假设v1、v2是两个引用可变对象的变量,如果v2是由v1浅拷贝得到的(或者是赋值得到的),那么v1和v2引用的是同一个可变对象,所以v1 == v2v1 is v2都返回True;如果v2是由v1深拷贝得到的,则v1和v2引用的是不同的可变对象,所以v1 == v2返回Truev1 is v2返回False。对于不可变对象,由于Python可能会进行优化,有时即使使用deepcopy进行深拷贝,Python也会让变量指向同一个对象,所以v1 is v2可能返回True

判断对象是否是可迭代对象

在Python中判断对象是否可迭代的方法是判断该对象是否是Iterable的实例:

1
2
3
4
5
from collections.abc import Iterable

print(isinstance('hello world', Iterable)) # True
print(isinstance([1,2,3,4], Iterable)) # True
print(isinstance(123, Iterable)) # False

判断对象是否是可调用对象

Python中的内置函数callable可用于判断对象是否可以调用:

1
2
print(callable(print)) # True
print(callable('hello')) # False

参考

  1. 《Python is 与 == 区别》菜鸟教程

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!