python中定义函数的关键词是def
,例如定义一个叫my_function
的函数我们可以这么定义, 其中括号内的x
,y
为传入的参数。
def my_function():
# function body
返回值
函数可以用关键字return
返回数据。函数执行到return
即返回不再执行函数。没用写return
语句的函数,默认返回None
。return None
可以简写成return
。
空函数
如果想要定义一个什么都不做的函数,那么可以用pass
语句。
例如
def do_nothing()
pass
pass
起的是占位符的作用。如果这个函数具体内容不需要定义就可以使用pass
。
参数检查
前一篇文章介绍过内置函数会对传入的参数的个数和数据类型进行检查。那么对于自定义函数,python是怎么处理的呢?
我们定义一个函数
def my_function(x,y):
return x*y
调用:
my_function(1,2,3)
报错:
Traceback (most recent call last):
File "/Users/W/Code/Python/LearnPython/DataType.py", line 4, in <module>
my_function(1,2,3)
TypeError: my_function() takes exactly 2 arguments (3 given)
调用:
my_function(1,"abc")
报错:不返回错误信息。事实上我们希望my_function传入的两个参数应该是整数活着浮点数才对。
为函数添加参数检查
我们对my_function
作一些改写。
def my_function(x, y):
if not (isinstance((x,y),(int,float)) and isinstance(y,(int,float))):
raise TypeError('Bad operand type')
return x*y
此时调用my_function
函数时传入错误的参数则会抛出TypeError
。
函数返回多个值
Python支持返回多个值。Python其实是通过返回一个tuple实现的。
我们可以通过简单的demo验证:
def func():
return 2, 3
print func()
则会输出(2,3)
这么一个tuple。
在语法上,返回一个tuple可以省略括号,即多个变量可以同时接收一个tuple,按位置赋给对应的值。例如x,y = func()
。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。