知行编程网知行编程网  2022-11-21 05:30 知行编程网 隐藏边栏  12 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于Python可变参数函数用法详解的相关知识,包括python 可变对象和不可变对象,以及函数参数传递这些编程知识,希望对大家有参考作用。

Python可变参数函数使用详解

很多编程语言都允许定义数量可变的参数,这样调用函数时可以传入任意数量的参数。 Python当然也不例外。 Python允许在形参前加星号(*),表示该形参可以接收多个参数值,多个参数值以元组形式传入。

下面程序定义了一个形参个数可变的函数:

# 定义了支持参数收集的函数
def test(a, *books) :
    print(books)
    # books被当成元组处理
    for b in books :
        print(b)
    # 输出整数变量a的值
    print(a)
# 调用test()函数
test(5 , "php中文网" , "Python教程")

运行上面程序,将看到如下运行结果:

('php中文网', 'Python教程')
php中文网
Python教程
5


从上面的运行结果可以看出,调用test()函数时,books参数可以传入多个字符串作为参数值。从test()的函数体代码来看,参数收集的本质是一个元组:Python会将传递给books参数的多个值收集到一个元组中。

Python 允许在形参列表的任意位置有可变数量的形参(不需要是形参列表的最后一个参数),但是 Python 要求一个函数最多只能取一个形参,该形参支持“正常”参数集合。例如,下面的程序:

# 定义了支持参数收集的函数
def test(*books ,num) :
    print(books)
    # books被当成元组处理
    for b in books :
        print(b)
    print(num)
# 调用test()函数
test("php中文网", "Python教程", num = 20)

从上面的程序可以看出,test()函数的第一个参数是一个可变数量的形参。由于该参数可以接收不同数量的参数值,如果需要传入后面的parameters参数值,必须使用关键字参数,否则程序会将传入的多个值视为传递给books参数。

Python 还可以收集关键字参数,在这种情况下,Python 会将这些关键字参数收集到字典中。为了让 Python 收集关键字参数,需要在它前面加上两个星号。在这种情况下,一个函数可以同时包含一个支持“普通”参数集合的参数和一个支持关键字参数集合的参数。例如下面的代码:

# 定义了支持参数收集的函数
def test(x, y, z=3, *books, **scores) :
    print(x, y, z)
    print(books)
    print(scores)
test(1, 2, 3, "php中文网" , "Python教程", 语文=89, 数学=94)

上面程序调用test()函数时,会将前面的1、2、3传递给普通参数x、y、z;接下来的两个字符串将被 books 参数收集到元组中;最后两个关键字参数将作为字典收集。运行上面的代码,你将看到以下输出:

1 2 3
('php中文网', 'Python教程')
{'语文': 89, '数学': 94}

对于上述方式定义的test()函数,参数z的默认值影响不大。例如,调用 test() 函数如下:

test(1, 2, "php中文网" , "Python教程", 语文=89, 数学=94)

如果你想让z参数的默认值起作用,你只需要传入两个位置参数。例如调用代码如下:

test(1, 2, 语文=89, 数学=94)

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享