day 11 函数参数
形参与实参
形参:就是形式参数,在函数定义时,写在括号里面指定的参数就是形式参数
实参:在调用函数时传入的参数就是实参
在调用函数时就会自动的把形参与实参绑定起来,然后调用结束之后,解除绑定关系
位置形参与位置实参
按照一定的顺序(从左往右)定义的参数就是位置参数
注意:
只要是定义了的位置形参都必须被传值
位置形参的数量与位置实参的数量必须一致,不能多传,也不能少传
实参会按照传入的位置依次赋值给形参
关键字参数
关键字实参:
在调用函数时,指名道姓的为形参赋值就称之为关键字参数
优点是
打破传入参数的顺序,可以与形参的顺序不同
注意:
1.不管以什么方式传值,每一个形参都应该被传值,
2.关键字参数必须放在位置参数的后面
3.不能为同一个形参传多次值
4.使用关键字传参时,实参的名字必须与形参的名字匹配
到底是位置参数还是关键字,是由实参传值的时候决定的
默认形参:
在定义时,已经为形参指定了一个值,那么这个形参就称之为默认形参
特定:
在调用时可以不用为默认形参传值,那么就使用这个参数的默认值
也可以为默认参数传值,则就使用传入的那个值
场景:当函数中的某一个形参经常出现重复的值,将其定义为默认形参
注意:
1.默认形参必须放在非默认形参的后面
2.默认形参的值在定义的时候就固定了
3.不应该将默认形参的默认值设置为一个可变类型,因为形参在定义的时候就已经固定了
所以会导致函数调用始终使用那块空间
可变长参数
*的使用
带*的形参可以接受任意个数的实参,接受 到的实参会被打包成元组类型,形参的名字可以任意,
但是建议使用args
带*的实参
实参前面加*会将*后面的值打散
带*的形参不能接受关键字实参
当可变长形参出现在了位置形参的前面时,那么后面的位置形参必须以关键字实参传入
当可变长形参出现在了位置形参后面,会先按照顺序给前面位置位置形参赋值,多余的参数打包给*
**的使用
形参中如果带有**,会把关键字实参打包成字典类型传入
只能接受多出来的关键字实参
实参中**,会把**后面的字典打散,成为关键字实参
*和**为函数提供了拓展空间,后面根据需求增加参数
day 11 函数参数的更多相关文章
- c++11 函数模板的默认模板参数
c++11 函数模板的默认模板参数 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> ...
- c++11之函数参数包展开
1.关于 本文略带总结性,参考:泛化之美--C++11可变模版参数的妙用 参数包展开方式有两种: 递归展开 和 逗号表达式展开. 本文代码并非全部来自参考文章,自己做了注释和修改.请以原文为准 2. ...
- 用C++11实现C++17的apply(动态数组用作函数参数)
标题有点错误,apply是用tuple做参数,调用一个函数.这个标题是为了能更好的适配搜索关键字. 动态数组用作函数参数更适合嵌入了脚本环境的C++程序,比如lua或javascript(js). 若 ...
- php与js中函数参数的默认值设置
php函数参数默认值设置: <?phpfunction test($val=3){ echo $val."<br/>";}test(11);test();?& ...
- 深入理解javascript函数系列第二篇——函数参数
× 目录 [1]arguments [2]内部属性 [3]函数重载[4]参数传递 前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传 ...
- python基础(三元运算+深浅拷贝+函数参数)
三元运算 三元运算,又称三目运算,主要作用是减少代码量,是对简单的条件语句的缩写. 书写格式: result = 值1 if 条件 else 值2 即如果条件成立,则将值1赋给result变量,如果不 ...
- python函数基础以及函数参数简解
python中函数分为函数.内置函数Python所有的内置函数 自定义函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. ...
- PowerShell控制台输出符号+函数参数类型指定+文本内容读取
There are several ways: Write-Host: Write directly to the console, not included in function/cmdlet o ...
- python学习day10 函数Ⅱ(参数&作用域)
函数Ⅱ(参数&作用域) 知识小结: py2与py3的区别 逻辑运算()>not>and>or 字符串翻转切片翻转 is与==区别 git相关 数据类型判断 操作系统:cent ...
随机推荐
- 1.1:Get Started with Unity Shaders
文章著作权归作者所有.转载请联系作者,并在文中注明出处,给出原文链接. 本系列原更新于作者的github博客,这里给出链接. 第1章开始正式进入Unity Shader的学习. 什么是Shader 本 ...
- systemd 服务介绍
CentOS7自定义系统服务 CentOS7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,需要开机不登陆就能运行的程序,存在系统 ...
- lvs 初始 第一章
Linux Virtual Server 第一章 初识 一 . 介绍 LVS集群采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动 ...
- docker原理与上帝进程
做个笔记, 先水一会. 虚拟机指的是: 在软件的层面上通过模拟硬件进行的输入输出. docker原理:docker就是一个linux系统的进程, 它通过 Linux 的 namespaces 对不同的 ...
- 腾讯云centos7.2安装jdk1.7 tomcat7.0部署项目示例
说实话win server的性能并不好,所以程序员必须会在Linux上安装环境,部署项目. 第一步,官网下载tomcat和jdk压缩文件*.tar.gz 下载路径如下: jdk:http://www ...
- C# HttpWebResponse WebClient 基础连接已经关闭: 发送时发生错误.
https://blog.csdn.net/sun49842566/article/details/82802297 net 4.0 设置: ServicePointManager.SecurityP ...
- Anaconda安装mysqldb模块
在anaconda里mysqldb是封在mysql-python里的,所以要先在anaconda prompt里运行 conda install mysql-python.(注意要右键选管理员身份)有 ...
- group by查询每组时间最新的一条记录
最近需要查询每组时间最新的记录 表如下:
- 00-python-常用命令
1. pip 加速命令 pip install --index-url https://pypi.douban.com/simple 或者 pip install -i https://pypi.tu ...
- 组件、框架、Packagist、Composer
组件是一组打包的代码,是一系列相关的类.接口和Trait,用于帮助我们解决PHP应用中某个具体问题. 优秀的PHP组件具备以下特性: 作用单一:专注于解决一个问题,而且使用简单的接口封装功能 小型:小 ...