zoukankan      html  css  js  c++  java
  • 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 hamster's name is Harry.

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

    1 describe_pet('harry','hamster')

    I have a harry. 2 My harry's 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 hamster's 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 dog's name is Willie.

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

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

    学三境: 一境:昨夜西风凋碧树,独上高楼,望尽天涯路; 二境:衣带渐宽终不悔,为伊消得人憔悴; 三境:众里寻‘它’千百度,蓦然回首,那斯却在,灯火阑珊处。
  • 相关阅读:
    文档管理项目
    根据商品名称、价格区间检索商品的SQL语句
    ASP.NET MVC进阶三
    ASP.NET MVC进阶二
    vscode编写html,常用快捷方式与插件
    bpexpdate – 更改映像目录库中备份的截止日期以及介质目录库中介质的截止日期nbu
    Netbackup用于技术支持的问题报告(报障模版)
    netbackup 8.1安装注意事项
    金融的本质是什么?终于有人讲清楚了!(源于网络)
    nbu集群Alwayson相关问题
  • 原文地址:https://www.cnblogs.com/cpl9412290130/p/9404514.html
Copyright © 2011-2022 走看看