python - Python:将列表分配给函数
问题描述
有没有办法根据变量 env 分配一个列表并将结果传递给函数?我正在传递一个名为 env 的变量,例如,它可以是 UPE、DEV、PRD。根据结果,我想将列表分别分配给下面的函数。最好的方法是什么?
UPE=['SERVER1','SERVER2','SERVER3','SERVER4']
DEV=['ServerA','ServerB']
PRD=['SERVER1','SERVER2','SERVER3','SERVER4']
if os.path.isfile('/myfile/' + configFile):
config_parser = ConfigParser()
config_parser.read('/myfile/' + configFile)
if actions == "start":
startOVD('start',UPE[3]) //I want pass the result of env setup variable
#ans = raw_input("Would you like to start OVD, MSAS,OAG : y | n : ")
if env == 'UPE':
startMSAS('start',UPE[0])
startOAG('start',UPE[1])
startOHS('start',UPE[2])
for section_name in sorted(config_parser.sections(), reverse=True):
adminURL = config_parser.get(section_name, 'ADMIN_URL')
adminUsername = config_parser.get(section_name, 'ADMIN_USER')
adminPassword = config_parser.get(section_name, 'ADMIN_PASS')
adminHost = config_parser.get(section_name, 'NM_HOST')
domainName = config_parser.get(section_name, 'DOMAIN_NAME')
domainDir = config_parser.get(section_name, 'DOMAIN_DIR')
admPort = adminURL[-4:]
printHeader('Initiating Starting Sequence')
startAdmin('start', adminHost, domainDir, domainName, admPort)
showServerStatus('start', adminUsername, adminPassword, adminURL)
if actions == "stop":
for section_name in (config_parser.sections()):
adminURL = config_parser.get(section_name, 'ADMIN_URL')
adminUsername = config_parser.get(section_name, 'ADMIN_USER')
adminPassword = config_parser.get(section_name, 'ADMIN_PASS')
adminHost = config_parser.get(section_name, 'NM_HOST')
domainName = config_parser.get(section_name, 'DOMAIN_NAME')
domainDir = config_parser.get(section_name, 'DOMAIN_DIR')
admPort = adminURL[-4:]
printHeader('Initiating Stopping Sequence')
showServerStatus('stop', adminUsername, adminPassword, adminURL)
stopAdmin(adminHost, domainDir, domainName, admPort)
if env == 'UPE':
stopMSAS('stop',UPE[0])
stopOAG('stop',UPE[1])
stopOHS('stop',UPE[2])
stopOVD('stop',UPE[3])
解决方案
我会通过设置回调列表来组织它。
from functools import partial
start_funcs = [partial(startOVD 'start',UPE[3])
if env == 'UPE':
start_funcs.extend([partial(startMSAS, 'start', UPE[0]),
partial(startOAG, 'start', UPE[1])])
start_funcs.append(partial(startOHS, 'start', UPE[2]))
env
为具有不同值的情况添加类似的逻辑。最后,您只需迭代start_funcs
并按顺序调用每个函数。
if actions == "start":
for f in start_funcs:
f()
# ...
推荐阅读
- javascript - 处理(P5JS)curveVertex 不连接第 1 和第 2 点,虽然 vertex() 会
- sql-server - 如何将多主 Microsoft SQL Server 数据库部署为 IaaS 或 AWS RDS
- questdb - 通过 SQL 插入记录时遇到错误代码 00000
- c# - 绑定从方法获得的属性,返回对象
- azure - 如何追溯标记 Azure 资源?
- mongodb - 如何在一个 MongoDB 查询中加入两个集合
- reactjs - React js select不将文本显示为值
- sql - 同时选择和更新行
- python - 如何在 Gurobipy 中定义与二维矩阵相乘的目标函数
- string - LateInitializationError:本地“newTaskTitle”尚未初始化。(如果我最小化键盘,它不会添加新任务?)