Python语言(四)函数

函数是种抽象技术,将一组操作进行组合,并命名(也有匿名函数),然后在需要执行该组操作的地方,通过函数名调用该函数,执行组合操作。而输入通过形参传递,运算的结果通过返回值返回给调用。所以任何语言的“函数”概念都包括以下方面:函数定义,参数设定,返回值。

函数定义

Python函数定义通过关键字def,然后跟函数名,以及小括号括起来的形参,形参之间通过逗号分隔,最后接分号。函数体不同于java或C/C++,没有大阔号,而是通过缩进对齐表明块结构。

函数参数

Python的函数参数比较灵活,参数可以使用基本数据类型,也可以是list、dict等。还可以通过设置缺省参数,方便函数调用。

例如定义两个参数a、b,第二个参数有默认值0,当函数调用时,如果只给出一个参数,那么此值将赋给a,b的值认为0。如果调用时给定两个值,那么就分别赋给a和b。

#以求平方为例
def power(x):
    return x * x
#power调用
power(5)
=>25
#但是如果希望power函数可以计算其他幂运算可以定义power(x, n)
def power(x, n):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s
#但是这样一来,之前函数调用的地方power(5)因为参数个数不匹配而报错,为避免这样的问题定义n的默认值为2
#def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s
#当调用时只给一个参数power(5),其实调用的实际是power(5, 2)

可变参数

这也是Python比较有特色的地方,与普通参数不同的地方是,参数名前加*号:

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

调用时,calc(1, 3, 4)或者calc(4, 6, 7, 8)都能成功计算。如果存在list或tuple,如:

#将list或tuple作为可变参数传递
>>>l = [1, 2, 3, 4]
>>>calc(*l)
30
>>>t = (2, 4, 6)
>>>calc(*t)
56

关键字参数

可变参数允许传入0个参数,关键字参数也可以,但是如果确实要传入参数,那么必须给定参数的键与值。

#带有关键字参数的函数定义
def person(name, age, **kw):
    print 'name:', name, 'age:', age, 'other:', kw

#只传入必选参数
>>> person('Michael', 30)
name: Michael age: 30 other: {}

#传入任意个数的关键字参数
>>> 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'}
实际上关键词参数是以字典方式dict传输的,因此可以直接将dict变量传递给带有关键词参数的函数。

>>> kw = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **kw)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
返回值

Python函数可以返回多个值,然后可以在函数调用的左边放置多个变量,分别将返回值赋给这几个变量,要求变量个数和返回值数量相同。其实,Python将返回值作为tuple对象返回,如果调用只返回给一个变量,那么这个变量就是一个tuple对象,如果多个变量,那么就将tuple对象包含的元素取出分别赋给它们。

#Python函数可以返回多个值,是以tuple形式组织起来的
>>> def foo(arg1, arg2):
	return arg1, arg2

>>> foo(2,3)
(2, 3)
>>> x = foo(2,3)
>>> x
(2, 3)
>>> y, z = foo(2, 3)
>>> y
2
>>> z
3
>>> 

lambda

最强大功能的lambda表达式在lisp中,Python中进行了很大的功能简化,只支持简单的语句。它的语法形式如:

#语法形式
lambda [arg1 [,arg2,.....argn]]:expression
#lambda表示匿名函数,但它可以被赋值给一个变量,
>>>f = lambda x: x * 2
#调用时,f相当于带有一个参数的函数
>>>f(3)
6
#或者如下方法调用
>>>(lambda x: x * 2)(3)
6






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值