python中定义函数的关键词是def,例如定义一个叫my_function的函数我们可以这么定义, 其中括号内的xy为传入的参数。

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()


Char
506 声望33 粉丝

hello world