python3为什么'string'不是str?

时间:2018-09-09 09:42:10

标签: python string python-3.x

我需要这个小片段来输出“这是一个字符串”(我需要myVar才能满足条件是str)

myVar = 'some-string'
if myVar is str:
    print('this is a string')
else:
    print('this is NOT a string')

但是当我运行它时,它会一直输出“这不是字符串”。 我不明白,有人可以指出我做错了什么以及如何解决?

我也尝试过:

myVar = str('some-string')
if myVar is str:
    print('this is a string')
else:
    print('this is NOT a string')

它也不起作用。

我不能使用isinstance()检查任何东西,我必须保持条件

if myVar is str:

,此条件必须为True。

我也尝试过这个:

if 'some-string' is str:
    print('this is a string')
else:
    print('this is NOT a string')

这还会输出“这不是字符串”

我不知道该怎么做才能满足这种条件

4 个答案:

答案 0 :(得分:2)

两种方式:

if type(myVar) is str:

if isinstance(myVar, str):

答案 1 :(得分:0)

您的检查不正确,str是类type的对象,可以创建class str的实例,正确的检查是:

myVar = str('some-string')
if isinstance(myVar,str):
    print('this is a string')
else:
    print('this is NOT a string')

以同样的方式给class A这张支票:

if x is A不正确

定义类将创建类type的特殊对象,该对象负责创建已定义类的实例,这就是为什么您需要使用isinstace()issubclass()来使用此特殊对象的原因以及用于回答查询的对象。因为简单的is会检查对象x是否为对象A,但这不是真的。

答案 2 :(得分:0)

如果要检查对象是否为字符串(或与此相关的任何类型),请使用untracked files: (use "git add <file>..." to include in what will be committed) ../.merge_file_1fRTco ../.merge_file_497EAv ../.merge_file_6Wrwsj ../.merge_file_FTsrcP ,如果Myvar为字符串,则为True。

所以:

isinstance(Myvar, str)

要成为pythonic语言,请勿使用大写字母作为变量...

答案 3 :(得分:0)

>>> string = "Hello"
>>> isinstance(string,str)
True
>>> isinstance(1,str)
False
>>> if isinstance(string,str):
    print("this is a string")
else:
    print("this is not a string")

this is a string
>>>