【Python学习笔记】定义函数
来源:互联网 发布:拓普网络怎么样 编辑:程序博客网 时间:2024/06/05 05:14
【根据廖雪峰python教程整理】
一、定义函数
在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
我们以自定义一个求绝对值的my_abs函数为例:
def my_abs(x):
if x >= 0:
return x
else:
return -x
请自行测试并调用my_abs看看返回结果是否正确。
请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。
如果没有return语句,函数执行完毕后也会返回结果,只是结果为None。
return None可以简写为return。
二、空函数
如果想定义一个什么事也不做的空函数,可以用pass语句:
def nop():
pass
pass语句什么都不做,那有什么用?实际上pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。
pass还可以用在其他语句里,比如:
if age >= 18:
pass
缺少了pass,代码运行就会有语法错误。
三、参数检查
调用函数时,如果参数个数不对,Python解释器会自动检查出来,并抛出TypeError:
>>> my_abs(1, 2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: my_abs() takes exactly 1 argument (2 given)
但是如果参数类型不对,Python解释器就无法帮我们检查。试试my_abs和内置函数abs的差别:
>>> my_abs('A')
'A'
>>> abs('A')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: bad operand type for abs(): 'str'
当传入了不恰当的参数时,内置函数abs会检查出参数错误,而我们定义的my_abs没有参数检查,所以,这个函数定义不够完善。
让我们修改一下my_abs的定义,对参数类型做检查,只允许整数和浮点数类型的参数。数据类型检查可以用内置函数isinstance实现:
def my_abs(x):
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
if x >= 0:
return x
else:
return -x
添加了参数检查后,如果传入错误的参数类型,函数就可以抛出一个错误:
>>> my_abs('A')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in my_abs
TypeError: bad operand type
错误和异常处理将在后续讲到。
四、返回多个值
函数可以返回多个值吗?答案是肯定的。
比如在游戏中经常需要从一个点移动到另一个点,给出坐标、位移和角度,就可以计算出新的新的坐标:
import math
def move(x, y, step, angle=0):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny
这样我们就可以同时获得返回值:
>>> x, y = move(100, 100, 60, math.pi / 6)
>>> print x, y
151.961524227 70.0
但其实这只是一种假象,Python函数返回的仍然是单一值:
>>> r = move(100, 100, 60, math.pi / 6)
>>> print r
(151.96152422706632, 70.0)
原来返回值是一个tuple!但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。
- 【Python学习笔记】定义函数
- python学习笔记 定义函数
- python 学习笔记(五)函数--定义函数
- Python学习笔记——函数定义、调用
- 【Python】学习笔记——-3.2、定义函数
- Python学习笔记(9):函数调用与定义
- 03-python学习笔记:函数-调用与定义
- 谭子python学习笔记--函数定义及作用域
- python学习-函数定义理解
- 定义函数-学习笔记
- Python学习笔记(一)——Python函数的定义和使用
- python 学习笔记 -- 函数
- Python学习笔记--函数
- Python学习笔记 函数
- Python学习笔记:函数
- python函数学习笔记
- Python学习笔记--函数
- Python学习笔记:函数
- 求 2/1+3/2+5/3+8/5+13/8.....前20项之和
- [Java IO]01_File类和RandomAccessFile类
- POJ归类
- 关于CPU位数和操作系统位数
- js读取excel表格
- 【Python学习笔记】定义函数
- XML
- 指针_引用_内存管理new_delete
- kafka基本简介
- Git:Git重置(git reset)
- 一个简单的数据质量检查和汇总工具——Profiler
- Kruskal最小生成树
- iOS开发UI篇—程序启动原理和UIApplication
- 07.10C