zoukankan      html  css  js  c++  java
  • python函数 (实参与形参)

    参考博客:https://www.cnblogs.com/aszeno/p/10384887.html

    函数

    什么是函数?函数是带名字的代码块,用于完成具体的工作。写出一个函数后,就可以一直调用。

     定义函数,函数的基本组成:

    1.1 向函数传递参数

    向函数中传递任意参数,这样打印出的结果就可以根据自己的选择,做出改变。即是下一节讲到的形参

    复制代码
    1 #向函数传递信息
    2 
    3 def greet_user(username):
    4     """显示简单的问候语"""
    5     print("hello," + username + "!" )
    6 
    7 greet_user('python')
    复制代码

    打印结果:

    1
    hello,python!

    2、形参与实参

    什么是形参?顾名思义,形参就是形式上的参数,可以理解为数学的X,没有实际的值,通过别人赋值后才有意义。相当于变量。

    什么是实参?顾名思义,实参就是实际意义上的参数,是一个实际存在的参数,可以是字符串或是数字等。

    以上面的例子介绍下什么是形参和实参:

    就是在函数名中定义一个形参,然后在函数调用的时候,给函数名中的形参传递一个实际的参数,这个就变为实参。这样的话执行函数体内容时就会执行对应的操作。

    注意:传入实参时,一定要加上引号,否则会报错。

    greet_user(python)
    NameError: name 'python' is not defined

    3、传递实参(位置实参、关键字实参、默认值、等效的函数调用、避免参数错误)

    使用背景:

    函数定义中可能包含多个实参,而向函数传递实参的方式有很多,位置实参和关键字实参等。

    3.1、位置实参

    调用函数时,必须将函数调用中的每个实参都关联到函数定义中的一个形参。关联方式是基于实参的顺序,这被称作位置实参

    复制代码
    1 #位置实参
    2 def describe_pet(animal_type,pet_name):
    3     """显示宠物信息"""
    4     print("
    I have a " + animal_type + ".")
    5     print("My " + animal_type + "'s name is " + pet_name.title() + ".")
    6 
    7 describe_pet('dog','harry')
    复制代码

    执行结果:

    I have a dog.
    My dog's name is Harry.

    3.1.1 可以多次调用函数

    复制代码
     1 def describe_pet(animal_type,pet_name):
     2     """显示宠物信息"""
     3     print("
    I have a " + animal_type + ".")
     4     print("My " + animal_type + "'s name is " + pet_name.title() + ".")
     5 
     6 describe_pet('dog','harry')
     7 
     8 #可以多次调用
     9 describe_pet("cat",'coo')
    10 describe_pet('pig','echo')
    复制代码

    执行结果:

    复制代码
    1 I have a dog.
    2 My dog's name is Harry.
    3 
    4 I have a cat.
    5 My cat's name is Coo.
    6 
    7 I have a pig.
    8 My pig's name is Echo.
    复制代码

    3.1.2 实参的位置也很重要,本末倒置可不好

    describe_pet('coo','dog')

    执行结果:

    I have a coo.
    My coo's name is Dog.

    3.2、关键字参数

    关键字实参 是传递给函数的名称:值对。直接将形参与实参关联起来,这样就不存在顺序问题(不会像上一个例子一样出现搞笑的结果)。

    示例:

    复制代码
    1 2、关键字实参
    2 def describe_pet(animal_type,pet_name):
    3     """显示宠物信息"""
    4     print("
    关键字实参示例:")
    5     print("I have a " + animal_type + ".")
    6     print("My " + animal_type + "'s name is " + pet_name.title() + ".")
    7 
    8 describe_pet(animal_type="dog",pet_name="harry")
    复制代码

    执行结果:

    关键字实参示例:
    I have a dog.
    My dog's name is Harry.

    3.3、默认值参数

    在编写函数时,可以给每个形参设定一个固定值,即为默认值。

    在调用函数给形参提供实参时,就使用实参值,否则,使用实参的默认值,因此,给形参指定默认值后,在函数调用中省略相应的实参。

    复制代码
    1 #默认值参数
    2 def describe_pet(pet_name,animal_type = 'dog'):
    3     """显示宠物信息"""
    4     print("
    关键字实参示例:")
    5     print("I have a " + animal_type + ".")
    6     print("My " + animal_type + "'s name is " + pet_name.title() + ".")
    7 
    8 describe_pet(pet_name="harry")
    复制代码

    执行结果:

    1 默认值实参示例:
    2 I have a dog.
    3 My dog's name is Harry.

    注意点:这里把pet_name 放在了前面,原因是在这里还是把它当做是位置参数,如果形参与实参的位置不对应,还是会报错

    如果不想使用默认值参数,也可以在调用函数时,将形参定义一个值,这样函数名中的形参默认值就会被忽略。

    1 describe_pet(animal_type="cat",pet_name="harry")

    3.4、等效的函数调用

    什么叫等效的函数调用,即在函数调用时,无论是使用位置参数还是关键字参数、默认值参数、等到的结果都是一样的,这样的方式就是等效调用。

    示例:

    1 #函数等效调用
    2 #一个名为harry 的小狗
    3 def describe_pet(pet_name,animal_type = 'dog'):
    4 describe_pet(pet_name="harry")
    5 describe_pet("harry")

    3.5、避免实参错误

    意思就是在进行参数调用时,要给形参传一定的实参。否则会报

  • 相关阅读:
    vue.js中created方法作用
    UasyUi的各种方法整理
    echarts 3.8.4: tree设置节点与节点之间连线的颜色,可以独立每条线分开设置
    echarts中的树形结构图(参数分析)
    echarts y轴数据如果太大就会造成坐标轴显示不完全的问题
    echarts 网络拓扑告警闪烁及提示信息自定义
    echarts 树图问题
    echarts grid多格显示问题
    echarts中自定义tooltip的换行问题
    yarn install 安装报错问题
  • 原文地址:https://www.cnblogs.com/022414ls/p/13272186.html
Copyright © 2011-2022 走看看