python中函数定义之实参形参

Posted 丹华抱一鷇音子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中函数定义之实参形参相关的知识,希望对你有一定的参考价值。

  一般在函数的定义中,会有一类变量---形参,它是函数完成其工作的一项信息。实参往往是调用函数时传递给函数的信息。我们在调用函数时,将要让函数使用的信息放在括号内。例如定义一个函数def greet_user(username):,在调用greet_user(‘jeese‘)中,将实参‘jeese‘传递给了函数greet_user(),这个值被存储在形参username中。

  传递实参有很多种方式,下面了解一下他们。

1、位置实参

   在调用函数时,每个实参要与定义中的形参关联起来。最简单的关联方式就是基于实参的顺序,这种关联方式就叫做位置实参。实参的顺序要与定义中的形参顺序一致。

1 def describe_pet(animal_type,pet_name):
2     print(
I have a +animal_type+.)
3     print(My +animal_type+"‘s name is "+pet_name.title()+.)
4 
5 describe_pet(hamster,harry)

  在调用describe_pet()函数时,要按照形参的顺序提供一个动物的类型和一个名字。。平时根据需要可以多次调用。

  运行结果:

1 I have a hamster.
2 My hamsters name is Harry.

  如果调用函数中给出的实参顺序和定义中的形参不同,就会出现令人啼笑皆非的结果。如下:

1 describe_pet(‘harry‘,‘hamster‘)

I have a harry. 2 My harrys name is Hamster.

  这种情况的出现就是实参顺序不正确,按照这种方式,实参‘harry’会被存储到形参animal_type中;同理,‘hamster‘将存储到形参pet_name中,结果就是我们得到了上面的名为Hamster的harry。

  所以切记,位置实参一定要与形参顺序一致。

2、关键字实参

  关键字函数实参是传递给函数的名称-值对。关键字实参让你无需考虑函数调用中的实参顺序,还能明确各个值的用途,得到的结果是一样的。

1 describe_pet(animal_type=hamster,pet_name=harry)
2 describe_pet(pet_name=harry,animal_type=hamster)
3 
4 I have a hamster.
5 My hamsters name is Harry.

3、默认值

  在函数定义编写的时候,可以给形参指定默认值。当在调用函数中给形参提供了实参时,python将使用指定的实参值,否则就是使用默认的形参值。使用形参给定的默认值时,调用函数时可以省略相应的实参。

1 def describe_pet(pet_name,animal_type=dog):
2     print(
I have a +animal_type+.)
3     print(My +animal_type+"‘s name is "+pet_name.title()+.)
4 
5 describe_pet(willie)

  运行结果:

1 I have a dog.
2 My dogs name is Willie.

  这个函数的编写改变了形参的顺序,由于带有默认值的animal_type不需要在函数调用中指定类型,因此函数只涉及到pet_name需要给出名字。鉴于python依然将该实参认为是位置实参,若需要给出函数名字,则这个名字的实参将关联到函数定义中的第一个形参,故而将带默认值的形参放在后面。

  若函数调用中,给animal_type重新赋了新的值,则原来的默认值即可忽略。

 



以上是关于python中函数定义之实参形参的主要内容,如果未能解决你的问题,请参考以下文章

python之函数基础

python函数一:函数的定义,实参形参

函数之实参给了很多,怎么用实参数据

28.Python:形参与实参

简单的函数实参形参默认值的定义

函数(形参/实参)