函数(形参/实参)

函数是带名字的代码块,用于完成具体的工作

  要执行函数定义的特定任务,可调用该函数。

什么时候使用函数:

  当在程序中需要多次使用同一功能的时候,为了简化代码,可以把这个功能定义到函数。

定义一个最简单的函数

>>> def hi():

...     print("hello,world")

>>> hi()

hello,world

>>> type(hi)

<class ‘function‘>

向函数传递信息: 

def hi(name):

    """问好~"""

    print("hello, " + name.title())

hi(‘alben‘)

#这里的(name)其实是一个参考,在真正调用的时候,根据需求填写任意值#

实参/形参

 前面定义的函数hi()中,需要给name指定一个值,这个name变量就是一个形参,而在调用的时候赋予的值“alben”就是一个实参。
在这个函数中,将实参“alben”传递给了函数hi()时,这个值就被存储在形参“name”中。

传递实参:

 在函数的定义中可能包含多个形参,因此调用函数的时候也可能包含多个实参,所以需要掌握怎样来向函数传递实参。

1、位置实参

#!/usr/bin/env python

#filename=fun2.py

def describe_pets(animal_type,pet_name):

    """显示宠物的信息"""

    print("\n I have a " + animal_type + ".")

    print("My " + animal_type + "‘s name is " + pet_name.title()+".")

describe_pets("Dog","cisco")

函数:describe_pets()需要一个动物的类型和名字,在调用函数的时候需要根据位置来提供类型和名字。

这里传递了两个形参,“Dog”,“cisco”

效果:

[[email protected] Day3]# ./fun2.py

I have a Dog.

My Dog‘s name is Cisco.

位置实参的顺序很重要!

例如:

describe_pets("cisco","Dog")

如果搞错了位置,就会出现很尴尬的结果

[[email protected] Day3]# ./fun2.py

I have a cisco.
My cisco‘s name is Dog.

这完全无法理解!

2、关键字实参

关键字实参是指在向函数传递参数时,直接在实参中将名称和值关联起来。

describe_pets(pet_name=‘cisco‘,animal_type=‘Dog‘)

效果:

[[email protected] Day3]# ./fun2.py

I have a Dog.
My Dog‘s name is Cisco.

这里在传递参数的时候,没有按照位置参数,而是直接用的关键字,所以不会出现混淆的情况。

3、默认值

在定义函数的时候,可以对形参指定默认值,调用函数的时候如果没有给形参提供实参,就是用默认值。

例如:

#!/usr/bin/env python

#filename=fun2.py

def describe_pets(pet_name,animal_type=‘Dog‘):

    """显示宠物的信息"""

    print("\n I have a " + animal_type + ".")

    print("My " + animal_type + "‘s name is " + pet_name.title()+".")

describe_pets(pet_name=‘cisco‘)

这段代码中,对函数 describe_pets()中的一个形参“animal_type”设定了默认值‘Dog’

所以在调用的时候,即使没有给形参‘animal_type’传递实参,也会有一个默认值。

使用默认值的注意点:SyntaxError: non-default argument follows default argument

 

时间: 2024-10-10 16:26:01

函数(形参/实参)的相关文章

《JS权威指南学习总结--8.3 函数的实参和形参》

内容要点: 一.可选形参      当调用函数的时候传入的实参比函数声明时指定的形参个数要少,剩下的形参都将设置为undefined值.     例如:       //将对象o中可枚举的属性名追加至数组       //如果省略a,则创建一个新数组并返回这个新数组.        function getPropertyNames(o,/*optional*/a){           if(a === undefined) a= [];           for(var property

已定义的函数有返回值,函数调用可以作为一个函数的实参,但是不能作为形参

1.问题描述 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( D  ) A)函数调用可以作为独立的语句存在 B)函数调用可以作为一个函数的实参 C)函数调用可以出现在表达式中 D)函数调用可以作为一个函数的形参 解析:返回值存在寄存器中, 没有地址, 不能作为形参,但可以作为实参. 2.形参与实参区别 形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用. 实参出现在主调函数中,进入被调函数后,实参变量也不能使用. 形参和实参的功能是作数据传送.发生函数调用时,

php中函数的实参和形参

php中函数的实参和形参严格一一对应.例子: <?php function test($a,$b=2,$c){  //函数test第二个参数给默认值 $result=3*$a+2*$b+$c; return $result; } echo test(3,4,5);//调用正确,结果为22 echo test(3,,5);  //错误,没有给第二个形参传值,即使第二个形参有默认参数也不能绕过他而给第三个参数传值 echo test(3,4);//错误,没有给第三个参数传值 总结:函数中的形参带默认

函数的实参 函数的形参 闭包 js

函数的实参和形参# 可选形参```if(a === undefined) a = [];```等价于```a = a || [];```这两句是完全等价的,只不过后者需要提前声明a而已如果参数没有传入,其余的填充undefined可选的形式参数:通过注释/*optional*/来强调参数可选,并且要将其放在最后,否则就要使用null或者undefined来作为占位符来进行传入# 可变长的实参列表# callee和callercallee为指代当前正在执行的函数caller指代当前正在执行函数的函

关于函数形参的一些讨论

形参的初始化与变量的初始化一样:如果形参具有非引用类型,则复制实参的值,如果形参为引用类型,则它只是实参的别名. 非引用形参: 普通的非引用类型的参数通过复制对应的实参实现初始化.当用实参副本初始化形参时,函数并没有访问调用所传递的实参本身,因此不会修改实参的值. while 循环体虽然修改了 v1 与 v2 的值,但这些变化仅限于局部参数,而对调用 gcd 函数使用的实参没有任何影响.于是,如果有函数调用gcd(i, j),i 与 j 的值不受 gcd 内执行的赋值操作的影响. #includ

从获取函数形参谈toString用法

问题 如何获取一个函数形参?我们都知道通过arguments可以获取运行时的实参值,但是形参值怎么获取,如果我们对toString的用法了解,这个问题就好解答了 toString Function.prototype.toString里有一句话说,在一个函数上直接调用toString方法,会以字符串形式返回这个函数的源码.这里有个重要信息,通过调用toString() 方法可以反编译解析出函数源码,多么强大简单的功能. // 撸代码 function tq(a, b, c) {} tq.toSt

指针形参实参传递时需要注意

指针形参实参传递时需要注意: 主调函数中实参指针传给被调函数的形参指针时,意味着两个指针指向同一块内存单元.这种情况下在被调函数中通过形参指针对内存区进行操作后,极有可能带来两个指针(形参指针和实参指针)指向不一致.这并不只是由malloc函数造成的(否定之前的观点).如果在主调函数中依然需要被调函数完成后的那个形参指针,明智的做法是将形参指针返回给主调函数. 为了远离这种不一致,最好的方法就是一律返回. PS:如果主调函数以后并不需要使用被调函数中的那个形参指针,此时就大可放心的使用指针之间的

函数指针(函数指针作为函数形参/函数类型作为函数返回类型)

函数指针是指向函数的指针变量. 因此"函数指针"本身首先应是指针变量,只不过该指针变量指向函数.这正如用指针变量可指向整型变量.字符型.数组一样,这里是指向函数.如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址.有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是大体一致的.函数指针有两个用途:调用函数和做函数的参数. 1 #include<stdio.h> 2 int max(int

7.通过函数修改实参的值 2012.3.20

*************************************************************************************************************************** 7.通过函数修改实参的值   2012.3.20 *****************************************************************************************************