python中判断变量的类型
本文转载自:https://www.cnblogs.com/xmnote/p/9334743.html
本人只是为了方便记录查看,进行转载的;需要查看详细文章可查看原链接。
python的数据类型有:数字(int)、浮点(float)、字符串(str),列表(list)、元组(tuple)、字典(dict)、集合(set)
一般通过以下方法进行判断:
1、isinstance(参数1,参数2)
描述:该函数用来判断一个变量(参数1)是否是已知的变量类型(参数2) 类似于type()
参数1:变量
参数2:可以是直接或间接类名、基本类型或者由它们组成的元组。
返回值: 如果对象的类型与参数二的类型(classinfo)相同则返回 True,否则返回 False
例子:
def typeof(variate):
cur_type = None
if isinstance(variate, int):
cur_type = "int"
elif isinstance(variate, str):
cur_type = "str"
elif isinstance(variate, float):
cur_type = "float"
elif isinstance(variate, list):
cur_type = "list"
elif isinstance(variate, tuple):
cur_type = "tuple"
elif isinstance(variate, dict):
cur_type = "dict"
elif isinstance(variate, set):
cur_type = "set"
return cur_type
# 返回变量类型
def getType(variate):
arr = {"int": "整数", "float": "浮点", "str": "字符串", "list": "列表", "tuple": "元组", "dict": "字典", "set": "集合"}
var_type = typeof(variate)
if not (var_type in arr):
return "未知类型"
return arr[var_type]
# 判断变量是否为整数
money = 120
print("{0}是{1}".format(money, getType(money)))
# 判断变量是否为字符串
money = "120"
print("{0}是{1}".format(money, getType(money)))
money = 12.3
print("{0}是{1}".format(money, getType(money)))
# 判断变量是否为列表
students = ['studentA']
print("{0}是{1}".format(students, getType(students)))
# 判断变量是否为元组
students = ('studentA', 'studentB')
print("{0}是{1}".format(students, getType(students)))
# 判断变量是否为字典
cur_dict = {"key1": "value1", "key2": "value2"}
print("{0}是{1}".format(cur_dict, getType(cur_dict)))
# 判断变量是否为集合
apple = {"apple1", "apple2"}
print("{0}是{1}".format(apple, getType(apple)))
返回:
2、通过与已知类型的常量进行比较
例子:
# 判断变量类型的函数
def typeof(variate):
type1 = ''
if type(variate) == type(1):
type1 = "int"
elif type(variate) == type("str"):
type1 = "str"
elif type(variate) == type(12.3):
type1 = "float"
elif type(variate) == type([1]):
type1 = "list"
elif type(variate) == type(()):
type1 = "tuple"
elif type(variate) == type({"key1": "123"}):
type1 = "dict"
elif type(variate) == type({"key1"}):
type1 = "set"
return type1
# 返回变量类型
def getType(variate):
arr = {"int": "整数", "float": "浮点", "str": "字符串", "list": "列表", "tuple": "元组", "dict": "字典", "set": "集合"}
cur_type = typeof(variate)
if not (cur_type in arr):
return "未知类型"
return arr[cur_type]
# 判断变量是否为整数
money = 120
print("{0}是{1}".format(money, getType(money)))
# 判断变量是否为字符串
money = "120"
print("{0}是{1}".format(money, getType(money)))
money = 12.3
print("{0}是{1}".format(money, getType(money)))
# 判断变量是否为列表
students = ['studentA']
print("{0}是{1}".format(students, getType(students)))
# 判断变量是否为元组
students = ('studentA', 'studentB')
print("{0}是{1}".format(students, getType(students)))
# 判断变量是否为字典
cur_dict = {"key1": "value1", "key2": "value2"}
print("{0}是{1}".format(cur_dict, getType(cur_dict)))
# 判断变量是否为集合
apple = {"apple1", "apple2"}
print("{0}是{1}".format(apple, getType(apple)))
返回:
补充:
isinstance() 与 type() 区别:
-
- type() 不会认为子类是一种父类类型,不考虑继承关系。
- isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。