Python 表示“的默认参数”;全力以赴;
我想给run方法一个默认参数,这样如果没有给出test_cases参数,它将运行所有测试用例。你建议我怎么做Python 表示“的默认参数”;全力以赴;,python,python-3.x,Python,Python 3.x,我想给run方法一个默认参数,这样如果没有给出test_cases参数,它将运行所有测试用例。你建议我怎么做 from collections import OrderedDict class TestCase(OrderedDict): def run(self, test_cases): for test_case_name in test_cases: self[test_case_name].run() 我会使用test\u cases=
from collections import OrderedDict
class TestCase(OrderedDict):
def run(self, test_cases):
for test_case_name in test_cases:
self[test_case_name].run()
我会使用
test\u cases=None
,如果不是test\u cases:test\u cases=[all,value,here];这样的条件也适用于空序列。我会使用测试用例=无
,如果没有测试用例,就说:测试用例=[全部,值,这里]
;这种条件也适用于空序列
from collections import OrderedDict
class TestCase(OrderedDict):
def run(self, test_cases=None):
if test_cases is None:
test_cases = default_all_test_cases # add all your default test cases here
for test_case in test_cases:
test_case.run()
您可以将默认的None
替换为另一个不可变的对象,例如字符串或整数
您可以用另一个不可变的对象(如字符串或整数)替换默认的
None
。是的,我的想法是一样的,但是没有一个对象来代表我的想法有点可笑……这确实是一个常见的习惯用法。将None
视为“未指定”而不是“无”。如果某人不想运行任何测试,他/她首先不会调用该方法。None
未指定,通常用于指定“默认值”。如果调用方指定了test\u cases
,那么它将是一个列表,可能大小为0。eumiro认为默认值必须是不可变的是正确的,因为在函数定义中指定默认值[]
而不是None
,这会导致问题。是的,我也这么想,但如果没有一个值来代表我的所有想法,那就有点可笑了……这确实是一个常见的习惯用法。将None
视为“未指定”而不是“无”。如果某人不想运行任何测试,他/她首先不会调用该方法。None
未指定,通常用于指定“默认值”。如果调用方指定了test\u cases
,那么它将是一个列表,可能大小为0。eumiro认为默认值必须是不可变的是正确的,因为在函数定义中指定默认值[]
,而不是None
,将导致问题。