Python 3:更改现有函数的默认值';s参数?

Python 3:更改现有函数的默认值';s参数?,python,parameters,python-3.x,arguments,default,Python,Parameters,Python 3.x,Arguments,Default,我正在创建一个程序,它最终会调用大约500次print函数,还有其他一些函数。这些函数每次都会采用完全相同的参数,如下所示: print(a, end='-', sep='.') print(b, end='-', sep='.') print(c, end='-', sep='.') print(..., end='-', sep='.') 是否有办法更改print函数参数的默认值?这样我就不必每次都键入end='-',sep='.。您可以使用定义一个特殊版本的print()为其提供默认参数

我正在创建一个程序,它最终会调用大约500次
print
函数,还有其他一些函数。这些函数每次都会采用完全相同的参数,如下所示:

print(a, end='-', sep='.')
print(b, end='-', sep='.')
print(c, end='-', sep='.')
print(..., end='-', sep='.')

是否有办法更改
print
函数参数的默认值?这样我就不必每次都键入
end='-',sep='.

您可以使用定义一个特殊版本的
print()
为其提供默认参数:

from functools import partial

myprint = partial(print, end='-', sep='.')
然后,
myprint()
将在整个代码中使用这些默认值:

myprint(a)
myprint(b)
myprint(c)

您还可以使用lambda函数:

my_print = lambda x: print(x, end='-', sep='-')
my_print(a)
my_print(b)
my_print(c)

还有一种方法允许使用多个参数并与lambdas一起使用:

my_print = lambda *args: print(*args, end="-", sep=".")

这比我要尝试的要好。我打算用
\uuuuu defaults\uuuuuuu
做一些可怕的事情(显然内置函数上根本不存在…)@MartijnPieters谢谢,这正是我想要的。但是,这与定义一个新函数有什么不同,比如
def myprint(*args):print(*args,end='-',sep')
或者像Lee建议的那样使用
lambda
?好奇的是,这在某种程度上更好吗?@PatrikLippojoki:
functools.partial将定义自己的包装函数编码为一行。更好的是它更短更清晰(在我看来);它表示您仍在调用
print()
,但使用默认参数.functools.partial是好的,请注意,它只在Python 2.5中“变得”可用,而Python 2.5现在已经相当旧了。确实如此。我知道有几家供应商的产品还没有通过RHEL5.4的认证,RHEL5.4还有2.4(!!)。@Lee:是的。但是你可以同时安装更新的版本。没有借口。但我非常理解你的意思:)微软会告诉你,在类似的情况下,旧系统是不受支持的。是的,它有时可能很傲慢,但也很实用。有了这个lambda,
my_print
只能接受一个参数,这使得函数不那么有趣。当然,它违背了
sep='-'
的目的。