这是Scala中的模式匹配开关案例,它基本上将选择器变量的不同数据类型与相应的case变量匹配,并对其进行一些操作
def valueToString(x: Any): String = x match {
case d: BigDecimal =>
/* do something here */
case a: Array[Byte] =>
new String(a, "UTF-8")
case s: Seq[_] =>
/*do something here */
case m: Map[_,_] =>
/*do something here */
case d: Date =>
/*do something here */
case t: Timestamp =>
/*do something here */
case r: Row =>
/*do something here */
}
Python并不完全支持这种模式匹配。我知道Python中的切换器,但它需要正则表达式或变量的实际匹配。我如何在Python中实现上述功能
答案 0 :(得分:1)
使用isinstance
方法检查通用输入的类型
import datetime
def value_to_string(input):
# String
if isinstance(input, basestring):
return 'string'
# BigDecimal
if isinstance(input, int):
return 'int'
# Array
if isinstance(input, list):
return 'list'
# Map
if isinstance(input, dict):
return 'dictionary'
# Date
if isinstance(input, datetime.date):
return 'date'
# ...
print value_to_string('')
print value_to_string(1234)
print value_to_string([1,2,3])
print value_to_string({"id": 1})
print value_to_string(datetime.datetime.now())
输出
string
int
list
dictionary
date