形参---函数完成其工作所需的一项信息,在定义函数时出现的参数

实参---调用函数时传递给函数的信息

提供的实参多余或者少于函数完成其工作所需的信息时,将出现实参不匹配错误。

形参实参:

  • 定义一个函数之后,我们后面可以进行多次调用。
  • 调用函数时,必须使得实参和形参一一对应,最简单的关联方式就是基于实参的顺序,即形参的顺序是power(x,y),实参的power(a,b)就要依次将a,b值传递给(x,y),
  • 实参可以覆盖形参的值,若形参power(x=0,y),调用时power(2),python会先列出没有默认值的参数y,然后赋值2;若调用时power(x=0,y=1),则传递的实参的值会覆盖掉形参的值,即,传递的参数值为0,1。
  • 关键值实参---关键值实参传递的时候直接将参数和值以成对的形式传递给函数,在实参传递的时候务必要保证写对形参以及对应的值,这样的传递无所谓顺序,因为我已经一一对应了。



大家一起看个栗子。

不可更改的对象

这个函数的输出值是多少?很多人会回答7,其实程序运行之后,其答案是6

为什么在这里形参的数值并不改变实参的数值?

这里需要给大家普及一个Python中的基础,在python中,string(字符串), tuples(元组), 和number(数值)是不可更改的对象,而list(列表),dict(字典)等则是可以修改的对象。

也就是说,这里形参的数值对于外部的实参的数值(number类型,不可变)来说是没有任何关系的,他们虽然是同一个名字,但是其指向对象是不一样的。所以当在程序最后进行打印a输出值的时候,其输出仍然是6。

下面这个栗子我们来看看可变的对象,以list(列表)作为实验对象。

可更改的对象

这个函数的输出值是多少?很多人会回答[1,2],其实程序运行之后,其答案是[2,1]。

与第一个栗子刚刚相反,这里形参的数值调用把实参改变了。因为本例中参数传递的是列表,其是可更改的对象,在函数内部经过系列赋值变化之后,所以在程序运行之后其输出值产生了变化。



另一个例子:

def modify1(m,K):m=2K=[4,5,6]return def modify2(m,K):m=2K[0]=0returnn=100
L=[1,2,3]
modify1(n,L)
print(n)
print(L)
modify2(n,L)
print(n)
print(L)

从结果可以看出,执行modify1( )之后,n和L都没有发生任何改变;执行modify2( )后,n还是没有改变,L发生了改变。因为在Python中参数传递采用的是值传递方式,在执行函数modify1时,先获取n和L的id( )值,然后为形参m和K分配空间,让m和K分别指向对象100和对象[1,2,3]。m=2这句让m重新指向对象2,而K=[4,5,6]这句让K重新指向对象[4,5,6]。这种改变并不会影响到实参n和L,所以在执行modify1之后,n和L没有发生任何改变;在执行函数modify2时,同理,让m和K分别指向对象2和对象[1,2,3],然而K[0]=0让K[0]重新指向了对象0(注意这里K和L指向的是同一段内存),所以对K指向的内存数据进行的任何改变也会影响到L,因此在执行modify2后,L发生了改变。

最后一个例子:

函数定义中,y=2是形参中的默认值,若只传递一个参数值,则y就默认为2,若实参传递两个值,则覆盖掉y这个默认值;return那里,因为参数z是一个字符串类型,xy是一个整型,所以要将数值类型转化为字符类型,同一类型才能进行拼接,一起输出。

转载链接:https://www.jianshu.com/p/6731983390ed

https://blog.csdn.net/Sophia199307/article/details/80606828

http://www.cnblogs.com/q735613050/p/7327685.html

http://www.cnblogs.com/sclforly/articles/3546572.html

python形参、实参相关推荐

  1. python形参实参

    实参和形参 前面定义函数 greet_user() 时,要求给变量 username 指定一个值.调用这个函数并提供这种信息(人名)时,它将打印相应的问候语. 在函数 greet_user() 的定义 ...

  2. python形参中传入两个实参_C语言学习第3篇---形参-实参概念剖析

    参数概念 #include<stdio.h>int function(int a){return a+1;}int main(){printf("%d",functio ...

  3. python形参和实参举例_Python形参和实参的学习及举例

    Python形参和实参的学习及举例 1.形参和实参 定义函数: def function(name): 函数定义过程中的name为形参,只占据一个参数位置,没有具体值. print(name + '1 ...

  4. C学习杂记(五)形参实参笔试题

    大意失荆州 不要以为简单就轻视,谨慎,细节,基础. 一.有以下程序 #include <stdio.h>typedef struct {int b, p;} A;void f(A c) { ...

  5. JS-函数(调用返回值)-形参实参-作用域

    JS- 函数-形参实参-作用域 1 回顾 数组 1. 什么是数组值的有序集合数组中的每个成员称之为元素元素具有位置,称之为索引索引从 0 开始,必须是连续的2. 声明数组三种方式① 数组直接量 []② ...

  6. JavaScript中对于函数的形参实参个数匹配是如何做的?

    函数形参实参个数匹配 <!DOCTYPE html> <html lang="en"><head><meta charset=" ...

  7. JS:函数的概念、执行、分类、方法、出入口、形参实参应用,事件的分类-第四天

    # 一.复习 1.循环的意义 - 减少代码冗余,减少文件体积 2.循环的三要素 - 计数器,执行条件计数器的改变, 3.死循环 - 无法通过自身结束循环 4.循环语句 5.循环的应用 - 需要重复执行 ...

  8. 方法的调用 +形参/实参

    方法的调用 +形参/实参 public class Demo02 { public static void main(String[] args) { int i = max(5, 4); //将下面 ...

  9. python形参中传入两个实参_认识Python函数的两个概念:形参与实参(16)

    我们先用Python编写一个比较两个数字大小的函数pMax(). def pMax(a,b): '''比较两个数字的大小,并返回较大的数字''' if a < b: print("{0 ...

  10. 函数运行 形参实参变化 内存空间_可能python创始人都不知道的,python函数实参形参讲解...

    今天我们来学习一下python函数的用法 函数是带名字的代码块,我们可以直接调用函数,无需反复板鞋完成该函数的代码 1.下面我们来看一个简单的函数 首先定义一个函数,def是定义的意思,后面是函数名 ...

最新文章

  1. 作为一个测试人员,在你提出问题之前请先想想如下问题
  2. SD-WAN — 技术架构
  3. Qwt(一): 编译 · 安装
  4. vue之父子组件通信
  5. 数学不好、英语不好、非本专业,想学python数据分析,能安排吗?
  6. JVM 学习一:JVM 的构架模型及生命周期
  7. kibana 查看索引库中文档个数_百度索引量是什么意思?和百度收录量的区别。...
  8. java eventbus 原理_本文为 Android 开源项目实现原理解析 EventBus 部分,从源码分析 EventBus 的实现原理...
  9. (十)Hibernate的一对一关联关系
  10. RFC2544时延测试——信而泰网络测试仪实操
  11. Quartz 表达式的学习
  12. in_array函数缺陷(原理+实战)
  13. initialize
  14. c语言贪吃蛇游戏问题描述,贪吃蛇小游戏的几个问题
  15. 对话投资人刘芹:认知不够,才不敢做疯狂的事
  16. python如何编写温度转换_用python写温度转换
  17. android极光推送 消息穿透广告弹窗,极光推送弹出两次消息,请大佬们帮忙指点迷津...
  18. 三年级神奇电子计算机教案,人教版三年级上册信息技术教案
  19. 信息处部门职责及岗位部门职责(附下载)
  20. 完美Crack:Froala Editor 4.0.16 Patch

热门文章

  1. cubes第六篇-sql支持
  2. pfSense book Html版下载!
  3. (译)响应式图片— srcset 和 sizes 属性
  4. CentOS 6.6下PXE+Kickstart无人值守安装操作系统
  5. 你应该首先保护哪些应用程序?这个问题本身问错了!
  6. 五种提高 SQL 性能的方法
  7. window.open('') 火狐,IE事件冒泡处理,点击事件冒泡处理
  8. EntityFrameworkCore DBFirst
  9. LA 3268 号码簿分组(最大流+二分)
  10. vb 字符串和数字相互转换函数