python如何将一个函数接收到的不定长函数传给另一个函数?
已知Python的rich https://github.com/willmcgugan/rich库可以在终端输出彩色的字体,所以想将现有代码里print的地方,替换为rich库的print进行打印,故封装了一个打印函数如下:
from rich import print as rprintdef color_print(msg):
style = 'bold green'
rprint('[' + style + ']' + msg + '[/ + style + ']'
然后觉得只要将自己代码中原来的print替换为color_print即可。
但是发现不行,因为原来代码中调用print的地方,有两种方式:
第一种:print(msg)
第二种,作用是输出后不换行
print(msg, end='')
对于第二种方式的调用,替换为color_print会报,因为参数个数不一致。
请问Python是否有什么办法可以把不固定个数的参数,从一个函数转到另一个函数?
回答:
def abc(a, *b){} b就是不定长的参数,其效果是一个tuple
def abc(a, **b){} b就是关键字的参数,其效果是一个map
回答:
这个就是Python的可变传参
def color_print(*msg): # msg是由位置参数组成的元组,但一般习惯写成 def color_print(*args)
print(msg)
color_print("abc","def",123)
输出结果
('abc', 'def', 123)
但这里*args 适用于位置参数传参,
类似color_print("a","b","c")
但对于关键字传参不行,类似color_print(a="123",b="456"),解决可变关键字传参就得用另外一个方式
示例
def color_print(**msg): # msg是关键字参数组成的字典,习惯这样使用def color_print(**kwargs)
print(msg)
color_print(a="tiantian", b="向上")
输出结果
{'a': 'tiantian', 'b': '向上'}
两个一般组合一起使用
def color_print(*args,**kwargs): style_clor = "red==============="
str1 = ""
for i in args:
str1+=i+" "
for v in kwargs.values():
str1+=v+" "
end_color="============red"
print(style_clor+str1+end_color)
print("abcddef","serssff", end=" *** ")
print()
color_print("abcddef","serssff", end=" *** ")
输出结果
abcddef serssff *** red===============abcddef serssff *** ============red
以上是 python如何将一个函数接收到的不定长函数传给另一个函数? 的全部内容, 来源链接: utcz.com/a/156463.html