如何正确获取Python变量类型?Python3类型判断异常求助
解决Python中bytes类型判断的问题
嘿,我明白你遇到的问题了!咱们先看看你代码里的问题出在哪儿:
你写的判断条件是type(base64_type) is 'bytes',但type(base64_type)返回的是类对象<class 'bytes'>,而不是字符串'bytes'——这俩完全不是一个东西,所以判断自然不成立啦。
下面给你几种正确的类型判断方式:
方法1:直接和bytes类比较(不用引号)
把字符串'bytes'换成实际的bytes类对象就行:
print(type(base64_type)) # 输出: <class 'bytes'> if type(base64_type) is bytes: print('wow') else: print ('Why are we not working')
这样就能正确触发print('wow')了。
方法2:推荐使用isinstance()(更灵活)
在Python中,判断对象类型的标准做法是用isinstance()函数,它支持继承关系的判断(比如如果有bytes的子类,也能正确识别),代码如下:
print(type(base64_type)) # 输出: <class 'bytes'> if isinstance(base64_type, bytes): print('wow') else: print ('Why are we not working')
这个方法比直接用type()更符合Python的最佳实践,建议优先使用。
再总结下问题根源
你之前的错误是把类对象和字符串字面量做了比较,type()返回的是类本身(比如bytes),而不是字符串'bytes',所以is判断会返回False,导致进入else分支。
内容的提问来源于stack exchange,提问作者Tampa
相关产品推荐
相关产品推荐

