Python 3.x 使用If语句的Python函数
我已经创建了一个函数列表,它们可以单独工作。但是,其他开发人员必须单独调用这些函数 像这样调用函数。我想在创建模块时简化一些,比如用户应该使用下面的行调用 “类型”将是以下任何一种类型(必填) a、 b、c、d 对于每种类型,应该从模块调用相关函数 “信息”将由开发人员输入(可选) “param”将是DBNAME(SQL、ORACLE、TERADATA等)的强制列表,对于rest是可选的Python 3.x 使用If语句的Python函数,python-3.x,Python 3.x,我已经创建了一个函数列表,它们可以单独工作。但是,其他开发人员必须单独调用这些函数 像这样调用函数。我想在创建模块时简化一些,比如用户应该使用下面的行调用 “类型”将是以下任何一种类型(必填) a、 b、c、d 对于每种类型,应该从模块调用相关函数 “信息”将由开发人员输入(可选) “param”将是DBNAME(SQL、ORACLE、TERADATA等)的强制列表,对于rest是可选的 我已经创建了以下类型的类。然而,我无法使用上述类型的IF语句生成正确的代码来创建上述函数。我怎样才能做到这一
我已经创建了以下类型的类。然而,我无法使用上述类型的IF语句生成正确的代码来创建上述函数。我怎样才能做到这一点呢?IIUC。您可以使用
dict
调用所需的函数
Ex:
def log_info(info=None):
print('log_info', info)
def log_info_DBCS(info=None):
print('log_info', info)
def log_info_DBName(param, info=None):
print('log_info_DBName', param, info)
def log_info_TableName(info=None):
print('log_info_TableName', info)
def log_info_RecordCount(info=None):
print('log_info_RecordCount', info)
def log_info_Duration(info=None):
print('log_info_Duration', info)
def call_func(func, **kargs):
f = {'log_info': log_info,
'log_info_DBCS': log_info_DBCS,
'log_info_DBName': log_info_DBName,
'log_info_TableName': log_info_TableName,
'log_info_RecordCount': log_info_RecordCount,
'log_info_Duration': log_info_Duration}
return f[func](**kargs)
typ = 'log_info_DBName'
dbname = 'SQL'
call_func(typ, **{"param":dbname})
call_func(typ, **{"param":dbname, 'info': "Hello World"})
首先,我不会给任何东西命名
类型
,因为它是内置的
其次,您不需要任何if
语句;看起来唯一不同的是错误字符串,因此您可以将其粘贴到枚举值中,并将其用作格式字符串:
from enum import Enum
class LogType(Enum):
Info = "cmd: {}"
DBName = "cmd: Connected to database-({})"
# .. etc.
def log_info(logtype, info):
logger.info(logtype.value.format(info))
这似乎不会为用户简化任何事情。N个函数调用将被N个(稍有不同的)函数调用所取代。您的意思是类似的吗?