经过一番阅读后,我发现自己正在努力用两种不同的方法将参数列表传递给函数。我读了一些迹象。这就是我想通了,至今:传递和处理函数参数的最佳方法
实际代码:
文件caller.py:
import worker
worker.version_check(iserver,login,password,proxyUser,proxyPass,
proxyServer,packageInfo)
worker.version_get(iserver,login,password,proxyUser,proxyPass,
proxyServer,packageInfo)
worker.version_send(iserver,login,password,proxyUser,proxyPass,
proxyServer,packageInfo)
文件:worker.py:
def version_check(iserver,login,password,proxyUser,proxyPass,proxyServer,service):
#code and more code
def version_get(iserver,login,password,proxyUser,proxyPass,proxyServer,service):
#code and more code
def version_send(iserver,login,password,proxyUser,proxyPass,proxyServer,service):
#code and more code
现在我有:
file caller.py:
import worker
args = (env, family, host, password, prefix, proxyServer,
proxyUser, proxyPass, option, jokerVar
)
worker.version_check(*args)
worker.version_get(*args)
worker.version_send(*args)
文件:worker.py:
def version_check(*args):
env = args[0]
family = args[1]
host = args[2]
password = args[3]
prefix = args[4]
proxyServer = args[5]
proxyUser = args[6]
proxyPass = args[7]
option = args[8]
jokerVar = args[9]
#code and more code
def version_get((*args):
env = args[0]
family = args[1]
host = args[2]
password = args[3]
prefix = args[4]
proxyServer = args[5]
proxyUser = args[6]
proxyPass = args[7]
option = args[8]
jokerVar = args[9]
#code and more code
def version_send(*args):
env = args[0]
family = args[1]
host = args[2]
password = args[3]
prefix = args[4]
proxyServer = args[5]
proxyUser = args[6]
proxyPass = args[7]
option = args[8]
jokerVar = args[9]
#code and more code
使用老方法(实际的代码),我相信这是更“友好”来称呼在只有一条线的功能(你可以在worker.py看到)。但是,使用新方法,我认为代码变得更加广泛,因为对于每个函数,我必须定义所有相同的变量。但这是最佳做法吗?我仍然在慢速学习Python,所以,对于代码中的任何错误感到抱歉。
而且一件重要的事情是,大部分变量都是从数据库中检索出来的,所以它们并不稳定。
一般来说,当你结束了与许多参数的函数,你需要考虑你的设计更多一些。传递一个对象比那么多参数要好? –
@MartijnPieters有可能给我一个例子吗?同时我会尝试在s.o上找到它。和python文档。 –
这组参数代表什么?可以命名吗?如果是这样,使它成为一个名为tuple或自定义类来保存该信息,那么你有一个对象来传递,而不是x个单独的参数。 –