Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.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 表示“的默认参数”;全力以赴;_Python_Python 3.x - Fatal编程技术网

Python 表示“的默认参数”;全力以赴;

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=

我想给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=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
,将导致问题。