函数

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

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

1.1 向函数传递参数

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

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

打印结果:

  1. hello,python!

2、形参与实参

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

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

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

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

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

  1. greet_user(python)
  2. NameError: name 'python' is not defined

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

使用背景:

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

3.1、位置实参

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

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

执行结果:

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

3.1.1 可以多次调用函数

  1. def describe_pet(animal_type,pet_name):
  2. """显示宠物信息"""
  3. print("\nI 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 实参的位置也很重要,本末倒置可不好

  1. describe_pet('coo','dog')

执行结果:

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

3.2、关键字参数

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

示例:

  1. 2、关键字实参
  2. def describe_pet(animal_type,pet_name):
  3. """显示宠物信息"""
  4. print("\n关键字实参示例:")
  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")

执行结果:

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

3.3、默认值参数

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

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

  1. #默认值参数
  2. def describe_pet(pet_name,animal_type = 'dog'):
  3. """显示宠物信息"""
  4. print("\n关键字实参示例:")
  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、避免实参错误

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

python 函数(实参与形参、传递参数)的更多相关文章

  1. 第5章函数进阶 第5.1节 Python函数的位置参数、关键字参数精讲

    前面第二章简单介绍了函数定义的语法,经过后面一系列的学习,函数有必要再次介绍一下相关内容. 一.    关于函数的语法 1.    语法 def 函数名([参数]): 函数文档字符串 函数体      ...

  2. 第十一篇 Python函数之定义&形参&实参&位置参数&关键字参数&可变长参数&默认参数

    函数的定义:函数是为了完成某一特定功能的,函数是逻辑结构化和过程化的一种编程方法 函数的定义格式,函数一般都是有返回值的 #语法 #函数名要能反映其意义 def 函数名(参数1,参数2,参数3,... ...

  3. C#形参,实参,值传递参数,引用传递参数,输出参数,参数数组的学习

    1)形参 形参顾名思义就是形式上的参数,不是实际的参数,它代替实际传入方法的值.在方法体代码中代表了值本身参与运算.形参定义于参数中,它不同于方法体内局部变量,因为是一个变量,在它的作用域内不允许存在 ...

  4. python 函数指动态形参,作用域

    函数的动态形参, 作用域 一 动态形参 如果我们需要给⼀一个函数传参, ⽽而参数⼜又是不确定的. 或者我给⼀一个 函数传很多参数, 我的形参就要写很多, 很⿇麻烦, 怎么办呢. 我们可以考虑使⽤用动态 ...

  5. Python函数小结(1)--参数类型(*, ** 的区别), 闭包

    刚开始学习python,python相对于java确实要简洁易用得多.内存回收类似hotspot的可达性分析, 不可变对象也如同java得Integer类型,with函数类似新版本C++的特性,总体来 ...

  6. [ActionScript 3.0] 通过内联函数对addFrameScript方法传递参数

    虽然说不推荐使用影片剪辑隐藏方法addFrameScript();但是解决某些问题,此方法的确会方便很多. 但是却不能直接传递参数,不过可以用迂回的方法,如下: mc.addFrameScript(m ...

  7. Python 函数的一般形式及参数

    #!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2017/11/01 21:46 # @Author : lijunjiang # @Fi ...

  8. Python学习教程(learning Python)--2.3.2 Python函数实参详解

    本节主要讨论函数调用时参数的实参问题. 1. 实参赋值顺序和型参定义顺序一一对应 Python在调用哪个子函数时,如果型参为多个,一般实参的排布顺序和型参顺序保持一致,即一一对应.我们以下面的代码为例 ...

  9. javascript 指定绑定函数名称,并且传递参数

      <html> <head> <title> New Document </title> <script type="text/jav ...

  10. python函数中的不定长参数

    python自定义函数中有两中不定长参数,第一种是*name,第二种是**name.加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数.加了两个星号 ** 的参数会以字典的 ...

随机推荐

  1. 「USACO15FEB」Censoring (Silver) 审查(银) 解题报告

    题面 就是让你--在字符串A中,如果字符串B是A的子串,那么就删除在A中第一个出现的B,然后拼接在一起,一直重复上述步骤直到B不再是A的子串 |A|\(\le 10^6\) 思路: KMP+栈 1.由 ...

  2. [技术翻译]使用Nuxt生成静态网站

    本周再来翻译一些技术文章,本次预计翻译三篇文章如下: 04.[译]使用Nuxt生成静态网站(Generate Static Websites with Nuxt) 05.[译]Web网页内容是如何影响 ...

  3. ipaclient 4.5.4 requires jinja2, which is not installed. rtslib-fb 2.1.63 has requirement pyudev>=0.16.1, but you'll have pyudev 0.15 which is incompatible. ipapython 4.5.4 has requirement dnspython>=

  4. Linux学习_菜鸟教程_4

    Linux远程登录 已经了解了登录流程,学会了用SecureCRT进行操作 Linux文件基本属性 Linux为保护系统安全,对不同的用户,开放不同的文件访问权限. 在linux中,我们可以使用ll或 ...

  5. Numpy的介绍与基本使用方法

    1.什么是Numpy numpy官方文档:https://docs.scipy.org/doc/numpy/reference/?v=20190307135750 NumPy是一个功能强大的Pytho ...

  6. bzoj1597: [Usaco2008 Mar]土地购买 dp斜率优化

    东风吹战鼓擂第一题土地购买送温暖 ★★★   输入文件:acquire.in   输出文件:acquire.out   简单对比时间限制:1 s   内存限制:128 MB 农夫John准备扩大他的农 ...

  7. 简单 hash 入门题目

    题目描述 NOIP 复赛之前,HSD 桑进行了一项研究,发现人某条染色体上的一段 DNA 序列中连续的 kkk 个碱基组成的碱基序列与做题的 AC 率有关!于是他想研究一下这种关系.现在给出一段 DN ...

  8. html5中的Web Storage

    html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage.sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有 ...

  9. mysql的查询优化

    参考网站:http://www.liyblog.top/p/6 这里总结了52条对sql的查询优化,下面详细来看看,希望能帮助到你     1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 wh ...

  10. git查看远程仓库和本地的区别

    git diff 你可以用 git diff 来比较项目中任意两个版本的差异. $ git diff master..test 上面这条命令只显示两个分支间的差异,如果你想找出 master , te ...