Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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_Typing_Mypy - Fatal编程技术网

Python 如何在函数中键入默认列表初始值设定项

Python 如何在函数中键入默认列表初始值设定项,python,python-3.x,typing,mypy,Python,Python 3.x,Typing,Mypy,我有以下功能 def foo(主列表=无): 如果主列表为“无”: 主列表=[] #用主列表做一些事情 这是因为如果您有一个默认列表,那么对于所有默认调用,该列表保持不变。因此,您可以通过将其设置为None,然后将其重置为函数中的实际默认列表来解决这个问题 键入此内容时,我希望执行以下操作: def foo(主列表:list[int]=None): 如果主列表为“无”: 主列表=[] #用主列表做一些事情 但是Mypy抱怨,因为现在我正在将None存储到列表[int]中,这是不对的 我应该

我有以下功能

def foo(主列表=无):
如果主列表为“无”:
主列表=[]
#用主列表做一些事情
这是因为如果您有一个默认列表,那么对于所有默认调用,该列表保持不变。因此,您可以通过将其设置为
None
,然后将其重置为函数中的实际默认列表来解决这个问题

键入此内容时,我希望执行以下操作:

def foo(主列表:list[int]=None):
如果主列表为“无”:
主列表=[]
#用主列表做一些事情
但是Mypy抱怨,因为现在我正在将
None
存储到
列表[int]
中,这是不对的

我应该

  • 使
    main_列表
    可选类型[list[int]]

  • 添加一个
    #type:ignore
    (这也将从其他正常工作的参数中删除所有键入内容)

  • 还有其他更好的办法吗


  • (我真的希望答案是#3,这就是我为什么要问的原因。现在在我的代码中,我选择了选项#2。)

    只需使用
    可选的[List[int]
    。通过将参数设置为可选参数,您不会丢失任何东西—您在函数体中显式处理
    None
    —因此没有理由不使用正确的类型。不管怎样,将空列表和
    None
    一视同仁都是一种恶作剧

    正如您所提到的,
    #type:ignore
    的问题在于它会抑制其他参数的类型检查