码迷,mamicode.com
首页 > 编程语言 > 详细

python中函数定义之实参、形参

时间:2018-08-03 18:46:45      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:python   关键字   否则   需要   esc   函数名   位置实参   动物   就会   

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

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

1、位置实参

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

1 def describe_pet(animal_type,pet_name):
2     print(\nI 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(\nI 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   关键字   否则   需要   esc   函数名   位置实参   动物   就会   

原文地址:https://www.cnblogs.com/cpl9412290130/p/9404514.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!