Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.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 - Fatal编程技术网

Python 调用这样的函数会被认为是不好的做法吗?

Python 调用这样的函数会被认为是不好的做法吗?,python,Python,假设我有这个函数签名: def foo(a=True, b=True, c=True, d=True, e=True): 考虑到所有传递的参数都应该是False,我认为这些是调用此函数的简明方法: foo(*5*[False]) foo(*[False]*5) 但有些事情告诉我,这将是糟糕的Python风格。你觉得怎么样?如果很难读,那就是不好的风格 请记住,代码的阅读频率要比编写频率高得多。如果很难阅读,那就是糟糕的风格 请记住,阅读代码的频率要比编写代码的频率高得多。您的代码应该自我解释

假设我有这个函数签名:

def foo(a=True, b=True, c=True, d=True, e=True):
考虑到所有传递的参数都应该是
False
,我认为这些是调用此函数的简明方法:

foo(*5*[False])
foo(*[False]*5)

但有些事情告诉我,这将是糟糕的Python风格。你觉得怎么样?

如果很难读,那就是不好的风格


请记住,代码的阅读频率要比编写频率高得多。

如果很难阅读,那就是糟糕的风格


请记住,阅读代码的频率要比编写代码的频率高得多。

您的代码应该自我解释并易于阅读。下面的示例有助于回答您的问题:

使用''startswith()和''endswith() 而不是字符串切片来检查 前缀或后缀

startswith()和endswith()是 更干净,更不容易出错。为了

例如:

    Yes: if foo.startswith('bar'):

    No:  if foo[:3] == 'bar':

您的代码应该自我解释,并且易于阅读。下面的示例有助于回答您的问题:

使用''startswith()和''endswith() 而不是字符串切片来检查 前缀或后缀

startswith()和endswith()是 更干净,更不容易出错。为了

例如:

    Yes: if foo.startswith('bar'):

    No:  if foo[:3] == 'bar':

我喜欢使用默认值遵循80-20规则。如果一个函数有一个参数的默认值,而我选择使用一个不同的值,我需要在调用中说明这一点,因为这是一条重要的信息

如果您实际上正在“违反”五个默认参数,我会在调用中明确地向读者说明这一点。i、 例如,我将按名称显式列出每个参数,并指出false


虽然您编写的代码应该可以工作,但它会让人分心,有人会专注于弄清楚您到底在做什么,而不是意识到重要的一点——您正在进行一个非常特殊的调用,因为您没有接受任何默认设置。这不是保存(电子)树的地方。

我喜欢使用默认值遵循80-20规则。如果一个函数有一个参数的默认值,而我选择使用一个不同的值,我需要在调用中说明这一点,因为这是一条重要的信息

如果您实际上正在“违反”五个默认参数,我会在调用中明确地向读者说明这一点。i、 例如,我将按名称显式列出每个参数,并指出false


虽然您编写的代码应该可以工作,但它会让人分心,有人会专注于弄清楚您到底在做什么,而不是意识到重要的一点——您正在进行一个非常特殊的调用,因为您没有接受任何默认设置。这不是拯救(电子)树木的地方。

是的,起初我认为这并不难阅读和理解,但后来我又想了想。谢谢是的,一开始我认为这并不难理解,但后来我又想了想。谢谢