• 《Python 学习手册4th》 第十八章 参数


    '''
    时间: 9月5日 - 9月30日
    要求:
    1. 书本内容总结归纳,整理在博客园笔记上传
    2. 完成所有课后习题
    注:“#” 后加的是备注内容
    (每天看42页内容,可以保证月底看完此书)
    “重点笔记”“本章习题” - 标题1,二级标题用- 标题2,笔记大纲标题、习题题目- 加粗,16px
    '''

    重点笔记

    摘要

    参数是对象作为输入发送给函数的方式。参数(argument)
    一. 传递参数

      下面是函数传递参数时的一些简要的关键点:

    • 参数的传递是通过自动将对象赋值给本地变量名来实现的
    • 在函数内部的参数名的赋值不会影响调用者
    • 改变函数的可变对象参数的值也许会对调用者有影响

    二. 特定的参数匹配模型

      参数在Python中总是通过赋值进行传递的。传入的对象赋值给了在def头部的变量名。

    1. 基础知识
      位置:从左至右进行匹配
      关键字参数:使用name = value这种语法
      默认参数: 为没有传入值的参数定义参数值,使用name = value这样的语法
      可变参数: 收集任意多基于位置或关键字的参数,函数能够使用特定的参数,它们是以字符串*开头,收集任意多的额外参数
      可变参数解包:传递人一多的基于位置或关键字的参数
      Keyword-only参数:参数必须按照名称传递
    2. 细节
      Python内部是使用以下的步奏来在赋值前进行参数匹配的:
      ①通过位置分配非关键字参数;
      ②通过匹配变量名分配关键字参数;
      ③其他额外的非关键字参数分配到*name元组中;
      ④其他额外的关键字参数分配到**name字典中;
      ⑤用默认值分配给在头部未得到分配的参数

    三. 任意参数的实例

    1. 收集参数
      第一种用法:在函数定义中,在元组中收集不匹配的位置参数
      >>> def f(*args):
          print(args)
      
          
      >>> f()
      ()
      >>> f(1)
      (1,)
      >>> f(1,2,3,4)
      (1, 2, 3, 4)
    2. ** 特性类似,但是它只对关键字参数有效。
      >>> def f(**args):
          print(args)
      
          
      >>> f()
      {}
      >>> f(a=1,b="py")
      {'b': 'py', 'a': 1}
    3. 混合用法
      函数头部能够混合一般参数、*参数和**参数去实现更加灵活的调用方式
      >>> def f(a,*arg,**args):
          print(a,arg,args)
      
          
      >>> f(1,2,3,x=1)
      1 (2, 3) {'x': 1}

    四. keyword-Only 参数

      可以在参数列表中使用一个*字符,来表示一个函数不会接受一个变量长度的参数列表,而是仍然期待跟在*后面的所有参数都作为关键字传递。


    本章习题:

    1.

    答: 1 2 5

    2.

    答: 1 2 3

    3.

    答: 1 (2,3)

    4.

    答:1,{c:3,b:2}

    5.

    答:1 5 6 4

  • 相关阅读:
    hdu 4685(强连通分量+二分图的完美匹配)
    图的连通性问题
    poj 1904(强连通分量+完美匹配)
    poj 2186 "Popular Cows"(强连通分量入门题)
    poj 1236(强连通分量分解模板题)
    EOJ2018.10 月赛
    21.Merge Two Sorted Lists
    20.Valid Parentheses
    19.Remove Nth Node From End of List
    18.4Sum
  • 原文地址:https://www.cnblogs.com/wuzhiming/p/3981556.html
Copyright © 2020-2023  润新知