1. 调用函数
Python内置了很多函数,供我们直接调用。
http://docs.python.org/3/library/functions.html
也可以在命令行通过help(abs)查看abs函数的帮助信息。
数据类型转换
数据类型转换函数,比如int()可以把其他数据类型转换为整数:
>>> int('123')
123
>>> int(12.34)
12
>>> float('12.34')
12.34
>>> str(1.23)
'1.23'
>>> str(100)
'100'
>>> bool(1)
True
>>> bool('')
False
函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,
相当于给这个函数起了一个“别名”:
>>> a = abs
>>> a(-1)
1
2. 定义函数
使用def语句,依次写出函数名、括号、参数、冒号:,
然后,在缩进块中编写函数体,函数的返回值用return语句返回。
def my_abs(x):
if x >= 0:
return x
else:
return -x
如果你已经把my_abs()的函数定义保存为my.py文件了,
可以在该文件目录下启动Python解释器命令行,
用from my import my_abs来导入my_abs()函数,
注意my是文件名(不含扩展名):
>>> from my import my_abs
>>> my_abs(-9)
9
空函数
def nop():
pass
实际上pass是用来作占位符,比如现在还没想好怎么写函数的实现,
就可以先放一个pass,让代码能运行起来。
pass还可以用在其他语句里,比如:
if age >= 18:
pass
缺少了pass,代码运行就会有语法错误。
参数检查
数据类型检查可以用内置函数isinstance()实现:
def my_abs(x):
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
if x >= 0:
return x
else:
return -x
返回多个值
比如在游戏中经常需要从一个点移动到另一个点,
给出坐标、位移、角度,就可以计算出新的坐标:
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.96152422706632 70.0
但其实这只是一种假象,Python函数返回的仍然是单一值:
>>> r = move(100, 100, 60, math.pi / 6)
>>> print(r)
(151.96152422706632, 70.0)
原来返回值是一个tuple!
但是,在语法上,返回一个tuple可以省略括号,
而多个变量可以同时接收一个tuple,按位置赋给对应的值,
所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。