python - 为什么某些 Python 函数在参数列表周围有一组额外的括号?

标签 python arguments parentheses

我见过一些 Python 函数是这样写的:

def get_year((year,prefix,index,suffix)):
  return year

如果没有像这样的额外括号,它与其他函数有何不同(如果有的话):

def do_format(yr,pfx,id,sfx):
  return "%s %s %s/%s"%(yr, id, pfx, sfx)

或者这只是风格的问题,或者如果它们不同,是否可以在不影响现有调用者语法的情况下将 get_year() 重写为 do_format() 的风格,反之亦然?

最佳答案

第一个函数接受一个元组参数,而第二个函数接受 4 个参数。您可以单独传递这些参数,也可以使用 splat 运算符将这些参数作为元组传递,这会将元组解压为单独的参数。

例如:

# Valid Invocations
print do_format(*('2001', '234', '12', '123'))  # Tuple Unpacking
print do_format('2001', '234', '12', '123')     # Separate Parameter
print get_year(('2001', '234', '12', '123'))

# Invalid invocation. 
print do_format(('2001', '234', '12', '123'))   # Passes tuple

关于python - 为什么某些 Python 函数在参数列表周围有一组额外的括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14880406/

相关文章:

python - '主进程退出'错误Gunicorn systemd文件

python - 在 Windows 中使用子进程 Popen.send_signal(CTRL_C_EVENT) 时如何达到预期的结果?

c++ - 将类型作为函数的参数 C++

javascript - Jquery/Javascript 数学 : Why are these two 1 line math problems not giving the same answer?

python - SQLAlchemy:别名模型上查询 "field IS NULL"和 "IS NOT NULL"的不同输出

Javascript 函数参数输入为 0 而不是 1

function - Julia - 将关键字参数传递给另一个函数?

list - 为什么要按这个顺序列出 monad?

mysql:如何转义perl字符串中的括号

python - Scipy FFT - 如何获得相位角