9 - Python函数定义-位置参数-返回值

1 函数介绍

        函数在编程语言中就是完成特定功能的一个词句组(代码块),这组语句可以作为一个单位使用,并且给它取一个名字。可以通过函数名在程序的不同地方多次执行(这叫函数的调用)。函数在编程语言中有基本分为:预定义函数,自定义函数。预定义函数可以直接使用,而自定义函数顾名思义需要我们自己定义函数。

在数学中的定义,这里就不介绍了。因为没卵用。哈哈

1.1 为什么要使用函数

在编程中使用函数主要有两个优点:

  1. 降低编程难度:通常将一个复杂的大问题分解成一系列的小问题,然后将小问题划分成更小的问题,当问题细化为足够简单时,我们就可以分而治之,各个小问题解决了,大问题就迎刃而解了。
  2. 代码重用:避免重复劳作,提供效率
  3. 代码更加简洁美观,可读性增加

1.2 Python中的函数

        在Python中,函数由若干语句组成代码块函数名称参数列表构成,它是组织代码的最小单元,使用函数可以完成一定的功能,在Python中函数主要分为三类:内置函数第三方函数库自定义函数。常用的内置函数在前面已经介绍,第三方函数库需要先引入模块,通过模块调用,在模块学习中进行介绍,这里主要说的是如何自定义一个函数。

2 函数的基本使用

        在Python中,定义一个函数要使用def语句,依次写出函数名括号括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。下面是一个函数的基本结构

def 函数名(参数列表):
    函数体(代码块)
    [return 返回值]   # 函数可以无返回值

注意:

  • 函数名就是标识符,命名要求一样
  • 语句块必须缩进,约定4个空格
  • Python的函数没有return语句,隐式会返回一个None
  • 定义中的参数列表成为形式函数,只是一种符号表达式(标识符),简称形参
    我们以自定义一个求绝对值的函数为例:
定义:
def abs(x):    
    if x >= 0:
        return x
    else:
        return -x

调用:
    abs(-10)

上面只是一个函数的定义,j具体来看一下各个部分的解释:

  • 函数名字叫做abs,接受1个形式参数x。
  • return x:表示要返回的值是x,函数可以无返回值。
  • 函数是一个可调用对象,函数名加括号就表示调用。
  • 和变量是的使用方式相同,在使用函数时,需要预先进行定义。
  • 直接打印函数名,不会触发函数的执行,反而会打印函数的内存地址。

我们自定义的函数abs,由于与内置函数重名,那么将会覆盖掉内置函数,所以请谨慎命名。

        函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。如果没有return语句,函数执行完毕后会隐士的返回None。如果我们确实要return None可以简写为return,或者不写return语句(会让人看不懂,建议只写return)。
        调用函数,那么只需要使用函数名加括号,就能执行,但如果函数定义了参数,那么必须在执行的时候传递参数给函授,否则会报异常!关于调用我们还需要了解:

  1. 函数定义,只是声明了一个函数,它不会被执行,调用时才会执行
  2. 调用方式就是函数名后加上小括号,如果有必要需要在括号内写上参数
  3. 调用时写的参数是实际参数,是实实在在传入的值,简称实参

函数是可调用对象,可以使用callable()进行判断

In [1]: def abs(x):
   ...:     if x >= 1:
   ...:         return x
   ...:     else:
   ...:         return -x

In [2]: callable(abs)     # 函数是可调用的,注意这里不能对函数加括号,那么callable判断的就是函数的返回值是否可以执行了
Out[2]: True

In [3]: a = '123'
In [4]: callable(a)    # 字符串是不可调用的
Out[4]: False

3 函数的参数

        定义函数的时候,括号中指定的就是函数的参数(形式参数),当我们调用函数时,需要将数据进行传递,这种传递参数的方式就叫做传参,严格来说函数只可以使用两种方式:位置传参关键字传参

  1. 位置传参:按照参数定义顺序传入实参
  2. 关键字传参:使用形参的名字来传入实参的方式

需要注意的时:参数传递时如果使用形参的名字,那么传入参数的顺序就可以和定义的顺序不同,当位置传参和关键字传参混用时,位置传参必须放在关键字传参前面传入

定义函数function:
In [1]: def function(x,y):
   ...:     result = x + y
   ...:     return result
   ...:

位置传参:
In [2]: function(1,2)    # 1对应x,2对应y。
Out[2]: 3

关键字传参:
In [3]: function(y=1, x=2)   # 使用关键字时,参数可以不用按照位置顺序。
Out[3]: 3

混合传参:
In [8]: function(1, y = 3)    # 混用时,关键字参数必须要再位置参数右边
Out[8]: 4

3.1 参数的默认值

        在定义形式参数时,为参数指定对应的值,就叫做参数的默认值,当定义了参数的默认值以后,我们传参时可以选择传递该参数的值,也可以选择不传递,当不传递此参数的值时,该参数就使用指定的默认值否则将会使用传递的值

参数默认值也属于位置参数,只不过是给位置参数定义了默认值。

In [9]: def function(x = 10, y = 20):
   
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值