现在我们学完了位置参数、默认参数、可变参数、关键字参数、命名关键字参数五种参数类型。
在Python中定义函数,可以使用这五种参数进行组合。
但是参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数
            def f1(a, b, c=0, *pp, **kw):
                print(a,b,c,pp,kw)
            dd = [9,10,12,14,15,17,19,20]
            dk = {'q':99, 'p':88}
            f1(*dd,**dk)
            9 10 12 (14, 15, 17, 19, 20) {'q': 99, 'p': 88}
            def f2(a,b,c=0,*,job,hh):
                print(a,b,c,job,hh)
            dw = (1,2,3)
            ww ={'job':'jj','hh':'HH'}
            f2(*dw,**ww)
            1 2 3 jj HH
可以通过一个tuple和dict来调用函数。
            def f3(a,b,c,*pp,host,words,**kw):
                print(a,b,c,pp,host,words,kw)
            pp1 = (1,2,3,4,5,6,7,8,9,0)
            pp2 = {'host':'HH', 'words':'WW'}
            pp3 = {'oo':'oooo', 'ppp':'pppppp'}
            pp4 = {'host':'HH', 'words':'WW', 'oo':'oooo', 'ppp':'pppppp'}
            f3(*pp1,**pp2,**pp3)
            f3(*pp1,**pp4)
            1 2 3 (4, 5, 6, 7, 8, 9, 0) HH WW {'oo': 'oooo', 'ppp': 'pppppp'}
            1 2 3 (4, 5, 6, 7, 8, 9, 0) HH WW {'oo': 'oooo', 'ppp': 'pppppp'}
实际上,对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数时如何定义的。
虽然可以组合多达5中参数与, 但不要同时使用太多的组合,否则函数接口的可读性和可理解性都会非常差。

练习:
以下函数允许计算两个数的乘积,请稍加改造,变成可接收一个或多个数并计算乘积:
def product(x, y):
    return x * y
-------------------------------------
def pro(*x,y=1):
     s = 1
     for i in x:
             s = i * s
     print( s*y )

Day5 - 07 函数的参数-参数组合的更多相关文章

  1. Day5 - 05 函数的参数-关键字参数

    可变参数可以传入任意个参数,并在函数调用时自动组为一个tuple,而关键字参数允许传入任意个携带参数名的参数,这些关键字参数在函数内部自动组为一个dict.         >>> ...

  2. Day5 - 03 函数的参数-位置参数和默认参数

    位置参数    调用函数时,传入函数的参数,按照位置顺序依次赋值给函数的参数.#计算乘方的函数                def power(x, n):            s = 1     ...

  3. Python函数中的参数(二)

    当使用混合特定的参数匹配模型时,Python将会遵循以下有关顺序的法则: 1.在函数调用中,参数必须以这样的顺序出现:任何位置参数(Value).任何关键字参数(name = Value)和*sequ ...

  4. 基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针

      您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. ...

  5. 百万年薪python之路 -- 函数的动态参数

    1.函数的动态参数 1.1 动态接收位置参数 在参数位置用*表示接受任意参数 def eat(*args): print('我想吃',args) eat('蒸羊羔','蒸熊掌','蒸鹿尾儿','烧花鸭 ...

  6. 【Java学习笔记】函数的可变参数

    package p2; public class ParamterDemo { public static void main(String[] args) { int sum1 = add(4,5) ...

  7. Python函数中的参数(一)

    函数传递参数时的简要关键点: 1.参数的传递是通过自动将对象赋值给本地变量名来实现的.函数参数在实际中只是Python赋值的一个实例.因为引用是以指针的形式实现的,所有的参数实际上都是通过指针进行传递 ...

  8. ios开发@selector的函数如何传参数/如何传递多个参数

    不同的类会有不同的传递方式,参数名也不尽相同.如果是传单个参数的就不用集合,如果是传多个参数可以用类似nsarray,nsdictionary之类的集合传递.看下面例子: 例子1: 通过NSTimer ...

  9. 给setTimeout和setIntreval函数添加回调参数

    setTimeout和setInterval是两个很常见的计时函数.在以前,他们只接收两个参数,我们无法直接向他们的回调函数中添加参数,如果需要实现添加多个参数,可以在外层多嵌一层来实现类似的功能.现 ...

随机推荐

  1. ImportError: No module named 'chardet'

    1.使用requsets出现这个错误,ImportError: No module named 'chardet' 原因:requests依赖其他一些模块 解决:依次使用pip安装即可 pip ins ...

  2. centos 6 系统下同步本地时间

    1.date显示系统时间 [root@oldboy ~]# dateTue Mar 31 22:45:55 CST 2020   #CST是指是指某中标准时间 非东八区时间 更改时间的三种方法 1.c ...

  3. 卷积神经网络图像纹理合成 Texture Synthesis Using Convolutional Neural Networks

    代码实现 概述 这是关于Texture Synthesis Using Convolutional Neural Networks论文的tensorflow2.0代码实现,使用keras预训练的VGG ...

  4. php 与 docker php-fpm 共存问题

    需求: 本地一个 php7 的 php-fpm,现在需要运行 php5.2版本的程序, 服务器安装的 nginx 解析域名,碰见 php 文件交给 php5的 php-fpm; 注意: fastcgi ...

  5. VulnHub靶场学习_HA:Forensics

    HA:Forensics Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-forensics,570/ 背景: HA: Forensics is an ...

  6. 直面秋招!非科班生背水一战,最终拿下阿里等大厂offer!

    前言 2020年已经接近到9月份了,很多粉丝朋友都对金九银十雀雀欲试了吧!也有很多朋友向我求教经验,因为我自己工作相对于稳定,在这里给大家分享一个粉丝朋友的经历,他作为一个曾经的菜鸡面试者,在不断的失 ...

  7. Guitar Pro小课堂之弹唱和弦转换小技巧

    吉他相对其他乐器的便携性,还有其便于弹唱的特点,受到了很多音乐萌新们的喜爱.对于刚刚接触吉他的萌新来说,学琴初期弹唱的时候经常会因为和弦卡顿的转换,和因为食指力度不够或技巧不对无法顺利演奏的大横按,导 ...

  8. 关于Camtasia2020安装完成之后无法运行问题的解决方法

    在录像编辑软件Cmtasia更新到了2020版本之后,有部分小伙伴们遇到了这样的问题:在我们安装好软件之后,居然无法运行.今天小编就给大家介绍一下该如何解决这个问题. 方法一: 第一步,选中桌面上Ca ...

  9. 如何将MathType恢复出厂设置

    必大家都知道,我们日常使用的手机是自带恢复出厂设置功能的,其实除了手机,咱们今天要说的这款公式编辑器MathType,也是可以进行恢复出厂设置操作的哦,下面就让小编给大家介绍一下吧. 一.打开Math ...

  10. C语言讲义——库函数排序qsort

    qsort函数在在stdlib.h中. 函数原型 void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void ...