Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 使用If语句的Python函数_Python 3.x - Fatal编程技术网

Python 3.x 使用If语句的Python函数

Python 3.x 使用If语句的Python函数,python-3.x,Python 3.x,我已经创建了一个函数列表,它们可以单独工作。但是,其他开发人员必须单独调用这些函数 像这样调用函数。我想在创建模块时简化一些,比如用户应该使用下面的行调用 “类型”将是以下任何一种类型(必填) a、 b、c、d 对于每种类型,应该从模块调用相关函数 “信息”将由开发人员输入(可选) “param”将是DBNAME(SQL、ORACLE、TERADATA等)的强制列表,对于rest是可选的 我已经创建了以下类型的类。然而,我无法使用上述类型的IF语句生成正确的代码来创建上述函数。我怎样才能做到这一

我已经创建了一个函数列表,它们可以单独工作。但是,其他开发人员必须单独调用这些函数

像这样调用函数。我想在创建模块时简化一些,比如用户应该使用下面的行调用

“类型”将是以下任何一种类型(必填)

a、 b、c、d

对于每种类型,应该从模块调用相关函数

“信息”将由开发人员输入(可选)

“param”将是DBNAME(SQL、ORACLE、TERADATA等)的强制列表,对于rest是可选的


我已经创建了以下类型的类。然而,我无法使用上述类型的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个(稍有不同的)函数调用所取代。您的意思是类似的吗?