形参与实参

  形参:就是形式参数,在函数定义时,写在括号里面指定的参数就是形式参数

  实参:在调用函数时传入的参数就是实参

在调用函数时就会自动的把形参与实参绑定起来,然后调用结束之后,解除绑定关系

位置形参与位置实参

  按照一定的顺序(从左往右)定义的参数就是位置参数

 注意:

  只要是定义了的位置形参都必须被传值

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

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

关键字参数

  关键字实参:

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

  优点是

    打破传入参数的顺序,可以与形参的顺序不同

  注意:

    1.不管以什么方式传值,每一个形参都应该被传值,

    2.关键字参数必须放在位置参数的后面

    3.不能为同一个形参传多次值

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

  到底是位置参数还是关键字,是由实参传值的时候决定的

默认形参:

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

  特定:

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

    也可以为默认参数传值,则就使用传入的那个值

  场景:当函数中的某一个形参经常出现重复的值,将其定义为默认形参

  注意:

    1.默认形参必须放在非默认形参的后面

    2.默认形参的值在定义的时候就固定了

    3.不应该将默认形参的默认值设置为一个可变类型,因为形参在定义的时候就已经固定了

    所以会导致函数调用始终使用那块空间

可变长参数

  *的使用

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

  但是建议使用args

  带*的实参

  实参前面加*会将*后面的值打散

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

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

当可变长形参出现在了位置形参后面,会先按照顺序给前面位置位置形参赋值,多余的参数打包给*

  **的使用

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

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

实参中**,会把**后面的字典打散,成为关键字实参

*和**为函数提供了拓展空间,后面根据需求增加参数

day 11 函数参数的更多相关文章

  1. c++11 函数模板的默认模板参数

    c++11 函数模板的默认模板参数 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> ...

  2. c++11之函数参数包展开

    1.关于 本文略带总结性,参考:泛化之美--C++11可变模版参数的妙用 参数包展开方式有两种: 递归展开 和 逗号表达式展开. 本文代码并非全部来自参考文章,自己做了注释和修改.请以原文为准 2. ...

  3. 用C++11实现C++17的apply(动态数组用作函数参数)

    标题有点错误,apply是用tuple做参数,调用一个函数.这个标题是为了能更好的适配搜索关键字. 动态数组用作函数参数更适合嵌入了脚本环境的C++程序,比如lua或javascript(js). 若 ...

  4. php与js中函数参数的默认值设置

    php函数参数默认值设置: <?phpfunction test($val=3){   echo $val."<br/>";}test(11);test();?& ...

  5. 深入理解javascript函数系列第二篇——函数参数

    × 目录 [1]arguments [2]内部属性 [3]函数重载[4]参数传递 前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传 ...

  6. python基础(三元运算+深浅拷贝+函数参数)

    三元运算 三元运算,又称三目运算,主要作用是减少代码量,是对简单的条件语句的缩写. 书写格式: result = 值1 if 条件 else 值2 即如果条件成立,则将值1赋给result变量,如果不 ...

  7. python函数基础以及函数参数简解

    python中函数分为函数.内置函数Python所有的内置函数 自定义函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. ...

  8. PowerShell控制台输出符号+函数参数类型指定+文本内容读取

    There are several ways: Write-Host: Write directly to the console, not included in function/cmdlet o ...

  9. python学习day10 函数Ⅱ(参数&作用域)

    函数Ⅱ(参数&作用域) 知识小结: py2与py3的区别 逻辑运算()>not>and>or 字符串翻转切片翻转 is与==区别 git相关 数据类型判断 操作系统:cent ...

随机推荐

  1. js 星星效果思路

    //星星的效果思路 1.获取需要修改的元素 ul li 跟p 布局 2.给li 加移入事件 更改提示框显示, 3.给li 加移出事件 更改提示框隐藏 4.给li加索引值代表自己的序号 5.在li移入时 ...

  2. qt, connect参数,Qt::DirectConnection,Qt::QueuedConnection

    connect用于连接qt的信号和槽,在qt编程过程中不可或缺.它其实有第五个参数,只是一般使用默认值,在满足某些特殊需求的时候可能需要手动设置. Qt::AutoConnection: 默认值,使用 ...

  3. CSS 组合选择器

    CSS 组合选择器 注:使用逗号分隔,同时应用. 多个id选择器拼接到一起 含有:i1 i2 i3的标签同时应用css样式. <html> <head> <!-- sty ...

  4. Character Encoding in .NET

    https://docs.microsoft.com/en-us/dotnet/standard/base-types/character-encoding#Encodings Characters ...

  5. 【2.0】SpringBoot2配置Druid数据源及监控

    什么是Druid? Druid首先是Java语言中最好的数据库连接池,也是阿里巴巴的开源项目.Druid是阿里巴巴开发的号称为监控而生的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池, ...

  6. Unity_3DText文字显示模糊怎么办

    在unity3d中创建一个3d text文字对象模型,但是发现默认情况下显示的文字很模糊,这种情况我们可以通过放大字体尺寸的方式解决这个问题,然后通过缩放的方式改变其大小. 1.打开unity3d场景 ...

  7. Learning-Python【2】:简单介绍Python基本数据类型及程序交互

    人类可以很容易的分清数字与字符的区别,但是计算机并不能,计算机虽然很强大,但在某些方面很笨,你得明确的告诉它,“1”是数字,“我”是文字.否则计算机是分不清的.因此,在每个编程语言中都会有数据类型的概 ...

  8. Nginx教程---03.Nginx日志切割

    Nginx的定时任务与自动切割 明确: 如果这个网站的访问量比较大,那么一天下来 nginx日志可能会特别的大,所以当出现这种情况呢,如果 把每天的日志都存在同一个日志文件里,会使你的日志文件大到让你 ...

  9. 去除pt种里tracker的方法

    1.下载BEncode Editor,打开 2.把下载的种子拖进去,可以看到这样的: tracker就是箭头指的地方,这个包含了个人帐号独一无二的私钥,如果泄露给别人的话别人下载就是走的你的帐号,轻则 ...

  10. Codeforces 587 E. Duff as a Queen

    题目链接:http://codeforces.com/contest/587/problem/E 其实就是线段树维护区间线性基,合并的时候注意一下.复杂度${O(nlog^{3})}$ #includ ...