Python学习笔记(9):函数调用与定义

python一定程度上和matlab很类似,存在较多的内置函数,供用户直接调用。通常来说,调用函数需要知道函数的名称和需要传入的参数,比如绝对值函数abs,可以在交互式命令行通过help(abs)查看abs函数的帮助信息。
调用abs函数:

>>>abs(100)
>100
>>>abs(-5)
>5

调用函数时,如果传入参数不对,系统会报错。
这里写图片描述

数据类型转换
python内置的常用函数通常包括数据类型转换,比如int()函数可以把数据类型转化为整数。

>>>int('123')
>123
>>>float('1.23')
>1.23
>str(1.23)
>'1.23'
>bool(1)
>True

韩树明其实对于一个函数对象的引用,可以使用如下方法,通过别的名称调用函数

>>>abs_new = abs
>>>abs_new(-1)
>1

函数的定义
和其他编程语言一样,用户可以定义自己写的函数,如下图所示自行定义一个简单的运算函数。

def my_function(x):
    result = 5*x
    return result

函数的运行结果使用return返回,如果没有return语句,函数的返回值为None。
函数可以返回多个值,可以采用多个变量进行接收,但函数返回多个值,通常是以tuple的形式保存,也就是说函数真正返回的是一个tuple,多个变量可以同时接收一个tuple,按位置对其进行赋值。定义函数的过程中,需要确定函数的名字和参数个数。

函数的参数设置

对于用户来说,在调用函数的时候,只需要向函数传递了正确的参数即可,函数内部被封装起来,调用的时候无需了解。python的参数除了必选参数外,还可以使用默认参数、可变参数和关键字参数。

默认参数
比如调用python的power()的函数,默认计算参数的平方,如果计算参数的立方、四次、五次方的时候,可以对函数进行如下定义。

def power(x,n):
    s = 1
    while n>0:
        n = n - 1
        s = s * x
    return s

经过如此定义后的power()函数,可以计算任意n次方,但之前的计算参数平方的power()函数就不能正常使用了,因为之前的函数给定的是一个参数,直接计算参数的平方。但经过我们修改过后,函数要求调用的时候提供两个参数,这个时候我们可以使用默认参数解决这个问题,可以把函数的第二个参数默认值设置为2:

def power(x,n = 2):
    s = 1
    while n>0:
        n = n - 1
        s = s * x
    return s

对函数进行这样的定义的话,当调用power(4)的时候,默认在调用power(4,2)。但如果想计算参数的其他次幂的话,就需要指明函数的参数。

在使用默认参数的时候,通常有以下几点需要注意:
1)函数的必选参数在前,默认参数在后,因为如果默认参数在前的话,系统会把你给定的第二个参数认定为第一个默认参数的给定值;
2)当函数由多个参数时,把变化大的参数放在前,变化小的参数放在后面。
默认参数降低了函数的调用难度,一旦需要复杂的调用时候,又可以传递更多的参数来实现,而不需要重新对函数进行定义。但有一点需要注意,默认参数必须只想不变对象。

可变参数

在python的函数调用中,传入的参数个数是可变的,可以是任意个。比如给定一组数A,B,C…,计算其平方的和。要定义出这个函数,必须确定输入参数,由于参数不确定,可以使用list将参数传进来,函数可以被定义如下。

def calc(numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

使用这种方式调用函数,就需要先定义出一个list。

>>>calc([1,2,3])
>14

对于这种函数可变的参数,可以使用如下方式。

def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

定义可变参数和定义list参数相比,仅在参数前加了一个*号,在函数内部,参数numbers接收的是一个tuple。因此,函数代码完全不变,调用该函数时,可以传入任意个参数,包括0个参数。

>>>calc(1,2)
>5
>>>cals()
>0

关键字参数
可变参数允许你0个或任意个参数,这些可变参数在调用时候自动组装成一个tuple。使用关键字参数,允许你穿入0个或者人一个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

def person(name, age, **kw):
    print 'name:', name, 'age:',age,'other:',kw

函数person除了必选参数name和age外,还接受关键字参数kw,在调用该函数时,可以只传入必选参数,也可以传入任意个数的关键字参数。

>>> person('Bob', 35, city='Beijing')
>name: Bob age: 35 other: {'city': 'Beijing'}
>>> person('Adam', 45, gender='M', job='Engineer')
>name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer"}

使用关键字参数可以对函数进行拓展,在上例中,保证能够接收name和age两个参数,但是如果调用者提供更多的参数,同样可以接收。

参数组合
在Python中定义函数,可以用必选参数、默认参数、可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。

比如定义一个函数,包含上述4种参数:

def func(a, b, c=0, *args, **kw):
    print 'a =', a, 'b =', b, 'c =', c, 'args =',   args,'kw =', kw
>>> func(1, 2)
a = 1 b = 2 c = 0 args = () kw = {}
>>> func(1, 2, c=3)
a = 1 b = 2 c = 3 args = () kw = {}
>>> func(1, 2, 3, 'a', 'b')
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {}
>>> func(1, 2, 3, 'a', 'b', x=99)
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {'x': 99}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值