扩展GetOperandValue()函数的功能与实现新的操作数值提取器
发布时间:2023-12-16 20:03:49
扩展GetOperandValue()函数的功能可以实现对不同类型操作数值的提取。我们可以增加对字符串、浮点数和布尔值的提取支持,同时可以实现对列表和字典中的操作数值的提取。
首先,我们需要定义一个新的函数get_operand_value(),该函数根据操作数的类型进行处理。
def get_operand_value(operand):
if isinstance(operand, str): # 如果操作数是字符串类型
return operand
if isinstance(operand, float): # 如果操作数是浮点数类型
return operand
if isinstance(operand, bool): # 如果操作数是布尔值类型
return operand
if isinstance(operand, list): # 如果操作数是列表类型
return [get_operand_value(value) for value in operand]
if isinstance(operand, dict): # 如果操作数是字典类型
return {key: get_operand_value(value) for key, value in operand.items()}
# 如果操作数是其他类型,默认返回原始值
return operand
现在,我们可以对GetOperandValue()函数进行扩展,将新的get_operand_value()函数作为一个辅助函数来使用。
以下是扩展后的GetOperandValue()函数的示例代码:
def GetOperandValue(operand):
if isinstance(operand, str): # 如果操作数是字符串类型
return operand
if isinstance(operand, float): # 如果操作数是浮点数类型
return operand
if isinstance(operand, bool): # 如果操作数是布尔值类型
return operand
if isinstance(operand, list): # 如果操作数是列表类型
return [get_operand_value(value) for value in operand]
if isinstance(operand, dict): # 如果操作数是字典类型
return {key: get_operand_value(value) for key, value in operand.items()}
# 如果操作数是其他类型,默认返回原始值
return operand
使用例子:
# 字符串类型操作数
operand1 = "Hello, world!"
print(GetOperandValue(operand1)) # 输出:"Hello, world!"
# 浮点数类型操作数
operand2 = 3.14
print(GetOperandValue(operand2)) # 输出:3.14
# 布尔值类型操作数
operand3 = True
print(GetOperandValue(operand3)) # 输出:True
# 列表类型操作数
operand4 = [1, 2, 3, [4, 5, 6], 7, 8]
print(GetOperandValue(operand4)) # 输出:[1, 2, 3, [4, 5, 6], 7, 8]
# 字典类型操作数
operand5 = {'name': 'Alice', 'age': 25, 'skills': ['Python', 'Java', 'C++']}
print(GetOperandValue(operand5))
# 输出:{'name': 'Alice', 'age': 25, 'skills': ['Python', 'Java', 'C++']}
通过以上示例,我们可以看到扩展后的GetOperandValue()函数成功地提取了不同类型操作数的值。对于字符串、浮点数和布尔值类型操作数,直接返回其原始值;对于列表和字典类型操作数,递归地提取其中的子操作数值。
