一.函数参数的分类

  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. 为什么分布式数据库中不使用uuid作为主键?

    分布式数据库当然也有主键的需求,但是为什么不直接使用uuid作为主键呢?作为曾经被这个问题困惑过的人,试着回答一下 1. UUID生成速率低下 Java的UUID依赖于SecureRandom.nex ...

  2. SpringBoot-外部运行jvm参数调优

    外部运行调优 java -server -Xms32m -Xmx32m  -jar springboot_v2.jar

  3. 【Tools】-NO.93.Tools.5.pyCharm-【pyCharm 安装与破解配置】-

    1.0.0 Summary Tittle:[Tools]-NO.93.Tools.5.pyCharm-[pyCharm 安装与破解配置]- Style:Tools Series:Tools Since ...

  4. rpm 包的安装、卸载、升级、查询、验证

    关键字: rpm 强制卸载jdk rpm -e j2sdk1.4.2_04 强制覆盖安装jdk rpm -Uvh j2sdk-1_4_1_02-fcs-linux-i586.rpm --force - ...

  5. IP-v4&IP-v6

    IPv6与IPv4区别: 1:IPv6的地址空间更大.IPv4中规定IP地址长度为32,即有2^32-1个地址: 而IPv6中IP地址的长度为128,即有2^128-1个地址. 2.IPv6的路由表更 ...

  6. UVA 12345 Dynamic len(带修莫队)

    Dynamic len [题目链接]Dynamic len [题目类型]带修莫队 &题解: 莫队可以单点更改,只要再多加一维,代表查询次数,排序的时候3个关键字. 之后循环离线的时候,先暴力时 ...

  7. 细说flask数据库迁移

    什么情况下要用数据库迁移? 在开发过程中,需要修改数据库模型,而且还要在修改之后更新数据库.最直接的方式就是删除旧表,但这样会丢失数据. 更好的解决办法是使用数据库迁移框架,它可以追踪数据库模式的变化 ...

  8. ASP.NET MVC案例教程(三)

    ASP.NET MVC案例教程(二) 让第一个页面跑起来 现在,我们来实现公告系统中的第一个页面——首页.它非常简单,只包括所有公告分类的列表,并且每个列表项是一个超链接.其中分类数据是用我们的Moc ...

  9. 平常比较多实用的SQL

    创建数据库 创建之前判断该数据库是否存在 if exists (select * from sysdatabases where name='databaseName') drop database ...

  10. 单端测序(Single-read)和双端测序(Paired-end和Mate-pair)的关系

    https://blog.csdn.net/hanli1992/article/details/82982434