欢迎访问我的个人博客
https://vincillau.github.io/
Python的几个知识点
最近博主学到了几个Python中比较重要的几个知识点,写篇博客记录一下。
==和is的区别
虽然之前大概知道==
和is
的区别,但是一直感觉模模糊糊,今天写代码的时候恰巧遇到了这个问题,就去查了一些资料,明确了一下。
==
运算符用与判断两个变量所引用的对象的值是否相等,is
则是判断两个变量引用的是否是同一个对象。假设v1、v2是两个引用可变对象的变量,如果v2是由v1浅拷贝得到的(或者是赋值得到的),那么v1和v2引用的是同一个可变对象,所以v1 == v2
和v1 is v2
都返回True
;如果v2是由v1深拷贝得到的,则v1和v2引用的是不同的可变对象,所以v1 == v2
返回True
,v1 is v2
返回False
。对于不可变对象,由于Python可能会进行优化,有时即使使用deepcopy进行深拷贝,Python也会让变量指向同一个对象,所以v1 is v2
可能返回True
。
判断对象是否是可迭代对象
在Python中判断对象是否可迭代
的方法是判断该对象是否是Iterable
的实例:
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
可用于判断对象是否可以调用:
print(callable(print)) # True
print(callable('hello')) # False