前面说过判断要用 if ... elif ... else,循环要用 for、while。在Python中,自定义函数也要用一个关键字:def 。我们可以先看一个例子,我们自己写一个求绝对值的函数:
def absolute(x):
if x >=0:
return x;
else:
return -x;
注意缩进!别忘了冒号!
return语句用于返回结果,一旦执行到return,不管后面还有没有代码,都直接返回结果并结束函数。如果没有返回结果,可以直接写:
return
你可以将一组功能相关的函数定义在一个Python文件中,在其他文件中导入。
比如你将上面的absolute()函数保存在easy_math.py这个文件中,然后通过import关键字来导入absolute()函数:
>>> from easy_math import absolute
>>> absolute(-1)
1
这样你在哪里都可以调用absolute()函数了。
空函数
如果你暂时没想好这个函数的功能怎么写,可以用pass关键字,让Python暂时不要管这个函数要干什么。
def nothing():
pass
你也可以在其他语句里用pass:
if age > 100:
pass
不写pass,空空的语句,Python会报错。
参数检查
我们自定义的函数absolute()用于返回参数的绝对值,但是如果用户传进来一个字符串,而不是数字,那么我们的函数就没办法正确运行了。有一个内置函数isinstance()可以帮我们检查一个数据是否是特定类型的:
def absolute(x):
if not isinstance(x, (int, float)):
raise TypeError("bad operand type")
if x >=0:
return x;
else:
return -x;
raise关键字用于抛出一个异常,我们后面会讲。
返回多个值
没错,Python里的函数可以返回多个值。学过C语言的人可能绝对不可思议。
def my_method(x, y):
x = x + 1
y = y + 1
return x, y
你在调用的时候就可以依次接受啦:
>>> a, b = my_method(1, 2)
>>> a
2
>>> b
3
事实上,多个返回值的时候,Python返回的还是一个值:
>>> result = my_method(1, 2)
>>> result
(1, 2)
它返回的是一个元组。a, b = my_method(1, 2)这种形式是简便写法。