Python入门(四):函数
来源:互联网 发布:做杂志的软件 编辑:程序博客网 时间:2024/04/30 05:30
1 调用函数
函数使我们的计算更加方便。
Python内置了很多有用的函数,我们可以直接调用。要调用一个函数,需要知道函数的名称和参数,比如求绝对
值的函数 abs,它接收一个参数。可以直接从Python的官方网站查看文档:
http://docs.python.org/2/library/functions.html#abs。也可以在交互式命令行通过 help(abs) 查看abs函数的
帮助信息。
调用函数的时候,如果传入的参数数量不对,会报TypeError的错误,并且Python会明确地告诉你:abs()有且仅
有1个参数,但给出了两个:
>>> abs(1, 2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: abs() takes exactly one argument (2 given)
如果传入的参数数量是对的,但参数类型不能被函数所接受,也会报TypeError的错误,并且给出错误信息:str
是错误的参数类型:
>>> abs('a')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: bad operand type for abs(): 'str'
2 编写函数
在Python中,定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块
中编写函数体,函数的返回值用 return 语句返回。例如:
def my_abs(x):
if x >= 0:
return x
else:
return -x
请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。如果没有return
语句,函数执行完毕后也会返回结果,只是结果为 None。
3 返回多值
函数可以返回多个值。需要注意的是,Python的函数返回多值其实就是返回一个tuple。
4 递归函数
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。例如:
def fact(n):
if n==1:
return 1
return n * fact(n - 1)
这个函数其实就是计算n!。
递归函数的优点是定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递
归清晰。使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当
进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归
调用的次数过多,会导致栈溢出。可以试试计算 fact(10000)。
5 定义默认参数
函数的默认参数的作用是简化调用,你只需要把必须的参数传进去。但是在需要的时候,又可以传入额外的参数
来覆盖默认参数值。我们来定义一个计算 x 的N次方的函数:
def power(x, n):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
假设计算平方的次数最多,我们就可以把 n 的默认值设定为 2:
def power(x, n=2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
这样一来,计算平方就不需要传入两个参数了:
>>> power(5)
25
由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面。
6 定义可变参数
如果想让一个函数能接受任意个参数,我们就可以定义一个可变参数:
def fn(*args):
print args
可变参数的名字前面有个 * 号,我们可以传入0个、1个或多个参数给可变参数:
>>> fn()
()
>>> fn('a')
('a',)
>>> fn('a', 'b')
('a', 'b')
>>> fn('a', 'b', 'c')
('a', 'b', 'c')
定义可变参数的目的也是为了简化调用。
- Python入门(四):函数
- Python入门(四)函数语法
- python入门(四)
- python入门(四)
- Python入门(四)
- Python入门(四,高级)
- python 入门笔记(四)
- Python基础入门(四)
- Python语言(四)函数
- Python拾遗(四)函数
- python 知识点(四)函数
- Python基础(四)- 函数
- Python入门(四)——模块,__name__属性,dir()函数,包的概念
- Python从入门到放弃(四):函数细讲
- Python从入门到放弃(四):函数细讲
- [Python]入门教程(四):Python中的函数
- [Python]入门教程(四):Python中的函数
- [Python]入门教程(四):Python中的函数
- java 实现操作mongodb的连接,增删查改
- anaconda环境下安装python包
- ZeroMQ研究与应用分析
- Java 3:变量、运算符(优先级)
- 解决Setting property 'source' to 'org.eclipse.jst.jee.server的问题
- Python入门(四):函数
- PAT A1022. Digital Library (30)
- Python 2.7 GUI 编程集成开发环境的搭建 Python 2.7 + PyQt 4 + Eric 6 环境搭建
- 使用 springMVC 请求Action 返回400编码
- CGI跟我学
- 最大匹配(1)--poj3041(最大匹配的应用 最大匹配=最小点覆盖数)
- 关于DIV垂直居中
- Ajax股票价格波动
- 1.1XAF框架开发视频教程-简单的订单管理实现过程,视频,提纲,及教程源码