一.函数参数的分类

  1.实参:调用参数,在括号内传入的实际值,值可以为常量、变量、表达式或三者的组合

  2.形参:定义函数时,在括号内声明的变量名,用来接受外界传来的值

    注意:形参随着函数的调用而产生,随着调用结束而销毁 

二.函数的实参

  1.位置实参:不用明确形参名的传参方式,一定按照位置给形参传值

  2.关键字实参:必须明确形参名字与值为形参传值,可以不用按照为宗旨

  3.注意:    

    1.关键字实参必须出现在位置实参后
    2.多个位置实参还是按照位置传参
    3.关键字实参为没有从位置实参拿到值的形参传值,可以不用按照指定顺序

      def fn2(a, b, c, d, e, f):

        print(a, b, c, d, e, f)

      fn2(10, 20, 30, e=100, f=500, d=200)

三.函数的形参

  3.1 位置形参的范畴

        1.位置形参 

      def fn(a, b, c):
        print(a, b, c)
     位置形参可以由 位置实参 与 关键字实参 来传值
      fn(10, 20, 30)
      fn(a=10, b=20, c=30)

    2.默认形参      

      def fn(a=10,b=20):
        print(a, b)

     默认形参可以由 位置实参 与 关键字实参 来传值,还可以不用传值(采用自身默认值)
      fn()
      fn(20, 30)
      fn(a=200, b=300)
      fn(100) # 就给a传
      fn(b=100) # 就给b传

     2.1 混用
      位置形参与默认形参同时存在,默认形参必须在后
      def fn1(a,b,c=10,d=20):
        print(a, b, c, d)

      位置形参必须传值,默认形参分情况传值
      fn1(100, 200, d=1000)

    3.可变长形参  

       可变长形参会以 元组 形式接受 位置形参与默认形参未接受完的 所有传入的位置实参,用索引来取第几个
       可变长形参只能由 位置实参 来传值 
        def fn(a, b=10, *args):
          print(a, b)
          print(args)

      小细节:可变长形参只能接受位置实参的值,位置实参还必须在关键字实参前,
      导致默认形参只能由位置实参来传值
      fn(1, 20, 100, 200) # 1给a 20给b,不能用b=20传 100,200给args 

  3.3 关键字形参的范畴 

    前提:出现在 * 之后的形参
    def fn(a, b=10, *, c, d=20, e):
      pass
     c,d,e都是出现在*之后,都是关键字形参,由于必须由 关键字实参 来传值,没有顺序的强行要求

    可变长关键字形参:用来接收没有被关键字形参接收完的关键字形参,也只能由关键字实参来传值
    用字典来存放数据
      def fn(**kwargs):
        print(kwargs)

      fn(a=10,b=20) # {'a': 10, 'b': 20}

      dic = {'x': 100, 'y': 200}
      fn(**dic) # {'x': 100, 'y': 200}

四.参数总结  

  def fn(a, b, c=10, *args, d, e=20, f, **kwargs):
    pass
  位置形参:a、b
  默认形参:c
  可变长位置形参:args
  无初值关键字形参:d、f
  有初值关键字形参:e
  可变长关键字参数:kwargs

  1.位置形参与默认形参: 能用 位置实参 关键字实参 传值
  2.可变长位置形参:只能 位置实参 传值
  3.所以关键字形参:只能 关键字实参 传值

  *全局变量当做关键字参数结果传入时在下方再改变不会影响函数的输出

    y = 40

    def aaa(arg=y):

      print(y)

      print(arg)

    aaa()

   #40

     20

    

DAY10 函数的参数的更多相关文章

  1. Python—day10 函数的参数分类

    一.实参与形参 1.形参:定义函数,在括号内声明的变量名,用来接受外界传来的值 def fn(形参们):                pass def fn(a,b,c):# 形参就是考虑实参的值, ...

  2. 【学习笔记】--- 老男孩学Python,day10, 函数, 动态参数 命名空间\作用域 global nonlocal

    1. 动态参数 位置参数的动态参数: *args 关键字参数的动态参数 : **kwargs 顺序:位置---*args---默认值---**kwargs 在形参上*聚合, **聚合 在实参上*打散, ...

  3. day10.函数,函数的参数

    函数的思维导图: 老师的笔记 昨天内容概括 #组长:默写统一交给组长 #不建议看视频 #上课敲过的所有的例子 # 1.看一遍.看能不能看懂 # 2.给每一道题起一个名字或者一句描述 # 3.看着文字, ...

  4. day10 python之函数的参数

    函数的基本属性 1.1 函数的含义 # 1.功能 :包裹代码,实现功能,达到目的 # 2.特点 :反复调用,提高开发效率,便于代码维护 1.1.2 函数的基本格式 # 函数名 :变量命名规则 # 函数 ...

  5. day10.函数基础及函数参数

    一.函数 功能:包裹一部分代码 实现某一个功能 达成某一个目的 特点: """ 特点:可以反复调用,提高代码的复用性,提高开发效率,便于维护管理 函数基本格式 函数的定义 ...

  6. day10.函数进阶

    函数的命名空间 从python解释器开始执行之后,就在内存中开辟了一个空间,每当遇到一个变量的时候,就把变量名和值之间的对应关系记录下来. 但是当遇到函数定义的时候解释器只是象征性的将函数名读入内存, ...

  7. 如何理解javaSript中函数的参数是按值传递

    本文是我基于红宝书<Javascript高级程序设计>中的第四章,4.1.3传递参数小节P70,进一步理解javaSript中函数的参数,当传递的参数是对象时的传递方式. (结合资料的个人 ...

  8. c#编程基础之函数可变参数

    可变参数:int sum (params int[] values)int sum (string name,params int[] values) 注意:params参数必须是形参表中的最后一个参 ...

  9. 函数动态参数实现format

    变量赋值一种是字符串格式化,一种是通过format的方式 1.字符串格式化 s="i am %s,age %d"%('Jasper',23)print(s) 打印输出:i am J ...

随机推荐

  1. DWZ富客户端框架使用手册【申明:来源于网络】

    DWZ富客户端框架使用手册[申明:来源于网络] ---- 地址:http://www.docin.com/p-288065388.html&s=C1218A403B04136160905E8E ...

  2. 51nod图论题解(4级,5级算法题)

    51nod图论题解(4级,5级算法题) 1805 小树 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 她发现她的树的点上都有一个标号(从1到n),这些树都在空 ...

  3. linux命令 网络篇

    linux常用命令 netstat 语法(命令)  主要查看端口状态 netstat  语法 netstat -t/tcp 显示Tcp传输协议连线状况; netstat -u/udp 显示UDP传输协 ...

  4. 20165311 ch02 课下作业

    补充完成课上测试(不能只有截图,要有分析,问题解决过程,新学到的知识点) 完成教材 p97 2.96 2.97,要有完备的

  5. jmeter安装与环境变量配置

    因jmeter是java开发的,要想运行java开发的程序,必须先下载JDK一.jdk 1.下载jdk  jdk下载地址:https://www.oracle.com/technetwork/java ...

  6. BeeHive小思考

    事件分发和事件处理 将所有行为注册为不同的时间类型,配置Module,让他们在事件发生时,响应这些事件(除了系统的事件,还可以注册自定义事件,触发自定义事件) Module注册之后应当会生成单例对象, ...

  7. Mycat了解下

    首先说下,因为本身不怎么推荐中间件,所以我对这东西也只是了解,业内mycat用的最好的应该顺风算一个,但是他们是做过二次开发的,咱菜鸡比不了,据说最近出来一个叫cetus的还不错,有空可以关注下 Ⅰ. ...

  8. BeanUtils工具类

    用对象传参,用JavaBean传参. BeanUtils可以优化传参过程. 学习框架之后,BeanUtils的功能都由框架来完成. 一.为什么用BeanUtils? 每次我们的函数都要传递很多参数很麻 ...

  9. webstorm 配置 开发微信小程序

    默认情况下,webstorm是不支持wxml和wxss的文件类型,不会有语法高亮 设置高亮 除了高亮,还需要代码提示, 所幸已经有前辈整理了小程序的代码片段,只需要导入其安装包即可使用,包文件路径如下 ...

  10. Thinkphp----------Thinkphp3.2的目录结构介绍

    ThinkPHP框架目录结构\index.php      入口文件\Application    应用目录\Public            资源文件目录\ThinkPHP      框架核心目录 ...