一.函数参数的分类

  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. nginx笔记 安装nginx 配置 反向代理 多虚拟主机

    1,检测linux上是否 通过yum安装了nginxrpm   -qi  nginx 2.安装nginx之前的依赖包yum install gcc patch libffi-devel python- ...

  2. Ubuntu软件安装和查看已安装相关知识

    说明:由于图形化界面方法(如Add/Remove... 和Synaptic Package Manageer)比较简单,所以这里主要总结在终端通过命令行方式进行的软件包安装.卸载和删除的方法.一.Ub ...

  3. 使用jsonp请求本地json文件

    使用jsonp解决请求本地文件跨域问题 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  4. [yum] yum加速

    通常,以我对于个人生活和工作品质的要求,并没有这个需求. 因为我的宽带费很贵,独享.就算是centos主站,也很快.但是当你去了一些办公环境恶劣的地方上班的时候, 也难免动用一些小技巧.如下: 装这个 ...

  5. 洛谷P1021邮票面值设计 [noip1999] dp+搜索

    正解:dfs+dp 解题报告: 传送门! 第一眼以为小凯的疑惑 ummm说实话没看标签我还真没想到正解:D 本来以为这么多年前的noip应该不会很难:D 看来还是太菜了鸭QAQ 然后听说题解都可以被6 ...

  6. Jmeter学习之-获取登录的oken值(1)

    ps: 这里只着重讲述如何实时获取其他接口返回的值,作为此次接口的参数传递,添加接口请求的相关不再详述,可查看上一篇文章 为了方便管理,此处将:登录接口单独放在一个线程组下面,需要使用登录接口返回的t ...

  7. 访问GitLab的PostgreSQL数据库,查询、修改、替换等操作

    1.登陆gitlab的安装服务查看配置文件 cat /var/opt/gitlab/gitlab-rails/etc/database.yml production: adapter: postgre ...

  8. gzframework demo搭建

    感谢框架作者,这里给出他的博客 http://www.cnblogs.com/GarsonZhang/ 背景:由于作者对代码的持续开发,导致了以前博客中的下载地址和构建方法和目前的项目不对应,这里给出 ...

  9. C#中哈希表(HashTable)的用法详解以及和Dictionary比较

    1.  哈希表(HashTable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对, ...

  10. CSRF(Cross Site Request Forgery, 跨站域请求伪造)

    CSRF(Cross Site Request Forgery, 跨站域请求伪造) CSRF 背景与介绍 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的 ...