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()。