知行编程网知行编程网  2022-11-10 23:30 知行编程网 隐藏边栏  163 
文章评分 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()函数的第一个参数是不定数量的形参。由于该参数可以接收可变参数值,所以如果需要传入后面的参数参数值,必须使用关键字参数,否则程序会将传入的多个值视为传递给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
这个人很懒,什么都没写
扫一扫二维码分享