自定义函数(第14篇)

前面说过判断要用 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)这种形式是简便写法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容