python如何将一个函数接收到的不定长函数传给另一个函数?

python如何将一个函数接收到的不定长函数传给另一个函数?

已知Python的rich https://github.com/willmcgugan/rich库可以在终端输出彩色的字体,所以想将现有代码里print的地方,替换为rich库的print进行打印,故封装了一个打印函数如下:

from rich import print as rprint

def 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

回到顶部