Python语言(四)函数
来源:互联网 发布:ipadair网络不稳定 编辑:程序博客网 时间:2024/05/16 09:01
函数是种抽象技术,将一组操作进行组合,并命名(也有匿名函数),然后在需要执行该组操作的地方,通过函数名调用该函数,执行组合操作。而输入通过形参传递,运算的结果通过返回值返回给调用。所以任何语言的“函数”概念都包括以下方面:函数定义,参数设定,返回值。
函数定义
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)>>> y2>>> z3>>>
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
- Python语言(四)函数
- Python拾遗(四)函数
- Python入门(四):函数
- python 知识点(四)函数
- Python基础(四)- 函数
- [Python]入门教程(四):Python中的函数
- [Python]入门教程(四):Python中的函数
- [Python]入门教程(四):Python中的函数
- python语言特性(四)
- C语言函数集(四)
- (四)C语言输入函数
- C语言基础(四)- 函数
- Go语言学习笔记(四)函数
- Python自学笔记(四)函数
- python学习(四):函数式编程
- Python学习 (四 函数式编程)
- 初始python(四) 函数的定义
- Python学习之函数(四)
- iOS开发网络篇—文件下载 通过block回调
- 【DB.Oracle】Oracle 10g安装教程(含 Win7用户安装及权限设置)
- C/C++中的回调函数
- mysql局域网访问设置
- ORACLE 还原(迁移)数据
- Python语言(四)函数
- STSdb,最强纯C#开源NoSQL和虚拟文件系统
- 解决ScrollView嵌套ListView的冲突
- ORACLE EM中如何查看数据表每条具体内容
- SDUTOJ 2127 树-堆结构练习——合并果子之哈夫曼树 【STL】
- 位运算
- 20个设计模式和软件设计面试问题
- [ORACLE] 添加用户及数据表授权
- 为PhoneGap写一个android插件