【发布时间】:2016-03-09 08:19:44
【问题描述】:
我的代码中有以下结构:
#!/usr/bin/env python
import <something>
.
.
.
from modules import *
from optparse import OptionParser
class Main:
def __init__(self):
parser = self.get_argument()
self.set_argument(parser)
def my_args(self):
parser = OptionParser(usage='usage: %prog [options]', version='%prog 1.0.0')
parser.add_option('-t', '--test', action='store_true', dest='test', default=False,
help='Help of test.')
.
.
.
return parser
def set_args(self, parser)
options, args = parser.parse_args()
params = dict(test=options.test, ..., arg100=options.arg100)
self.start(**params)
def start(self, **params):
print params
def ...:
...
.
.
.
if __name__ == '__main__':
Main()
我想运行 start 来获取参数及其值,以便在其他函数中使用。但是:
TypeError: start() takes exactly 2 arguments (1 given)
如何使用 kwargs 传递它们?
在start 中使用参数的最佳方法是什么。
我对kwargs 很陌生。
【问题讨论】:
-
如何调用
start()方法?如果我使用你上面写的start()方法,它不会出错,只是打印出一个空字典。 -
对不起,是的。你说的对。如何使用 kwargs 传递它们?
-
start 定义为采用 kwargs 或关键字参数,因为您将 ** 放在 params 前面,然后在 set_args 中定义 params 但您通过了测试,甚至没有声明并且您没有通过任何关键字参数。我不知道您是否在某处声明了另一个
test。您可能想解决这些问题。
标签: python function parameter-passing keyword-argument