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
虽然您编写的代码应该可以工作,但它会让人分心,有人会专注于弄清楚您到底在做什么,而不是意识到重要的一点——您正在进行一个非常特殊的调用,因为您没有接受任何默认设置。这不是拯救(电子)树木的地方。是的,起初我认为这并不难阅读和理解,但后来我又想了想。谢谢是的,一开始我认为这并不难理解,但后来我又想了想。谢谢