zoukankan      html  css  js  c++  java
  • 函数(二)

    一、函数的参数详解

    形参和实参

      形参:形式参数,就是在定义函数时,括号中指定的参数,本质就是一个名字

      实参:实际参数,在调用函数时传入的参数,是一个实际(明确)的值

    当我们在调用函数时就会自动把形参和实参进行绑定

    位置参数(用的最多)

        根据调用阶段,参数分为两类,即形参和实参

        所以对应的位置参数也有两种:

          位置形参: def func(a,b,c):      #abc都是位置形参

          位置实参: def func(1,2,3)     #1,2,3都是位置实参

      位置,其实值的就是顺序,从左往右来定义的参数就是位置参数

      位置参数和位置实参的数量必须是一致的,不能多传也不能少传

      实参会按照传入的位置依次赋值给形参

    关键字参数

      关键字实参:在调用函数时,指名道姓的为形参赋值的就称之为关键字参数

      优点:可以打破传入参数的顺序,可以不予形参顺序相同

    注意:

      1、不管以什么样的方式传值,每一个参数都必须被传值

      2、关键字参数必须位于位置参数的后面

      3、不能为同一个参数多次传值(即每个参数只能穿一个值)

      4、使用关键字传参时,实参的名字必须与形参的名字匹配

      注意:实参决定是位置参数还是关键字参数

    默认形参:

      在定义时,就已经为形参指定了一个值,那这个形参就叫做默认形参

      特点:

        在调用时,可以不用为默认形参传值,使用这个参数时就是默认值

        当然也可以传值,这样的话内部使用的就是你传入的值

        当函数中的某一个形参经常出现重复的值时,就可以将其定义为默认形参,可以简化调用代码

    注意(了解):不能将默认形参的默认值设置为一个可变类型,否则,会导致每次函数调用都共用同一个默认参数,所以,我们应该将函数设计为独立的功能,使得每次调用互不干扰

    可变长参数(重难点)

      可以传任意个数的实参

      传入实参的目的:给实参使用(意味着形参必须具备可以接收任意个数实参的能力)

    * 和 **

      *的使用

        带* 的形参表示可以接收任意个数的实参,接收到的实参会被打包成元组类型

        形参的名字可以随意,建议用args,是arguments的缩写

        interable是可迭代的,只要是可以被for in循环使用的都是可以迭代的(字符串 列表 元组 字典 集合)

        实参前面带*,会自动将*后的值打散

        带*的形参不能接收关键字实参

      **的使用

        形参中如果带有**,会把关键字实参打包成字典类型传入

        先为前面的形参赋值,后续多余的关键字参数赋值给**

        **只能接收多出来的关键字实参

    位置形参和可变长形参混合使用

      当可变长形参出现在位置形参前面时,后面的位置形参必须以关键字实参来传入

      当可变长形参出现在位置形参后面,会先按照顺序给前面的位置形参赋值,最后剩余的就赋值给可变长args

    *和**可以为函数预留扩展空间,后期可以根据需求增加函数,而且旧的函数调用方法也不会出现问题,所以提高了函数的扩展性

  • 相关阅读:
    python练习1--求和
    python--文件操作
    【省选】SDOI2017_树点涂色_LuoguP3703/LOJ2001_LCT/线段树
    【洛谷】P1784 数独
    【洛谷】P2671 求和
    【洛谷】P2261 [CQOI2007]余数求和
    【转载】利用向量积(叉积)计算三角形的面积和多边形的面积
    【洛谷】P1090 合并果子
    【转载】学习C++ -> 类(Classes)的定义与实现
    【洛谷】P2142 高精度减法
  • 原文地址:https://www.cnblogs.com/zhangzhechun/p/10255515.html
Copyright © 2011-2022 走看看