首页 > 代码库 > python学习笔记(二) - 函数

python学习笔记(二) - 函数

一. 调用函数

python内置了一些数据类型转换函数,比如int()函数可以把其他数据类型转换为整形

>>> int('123')
123
>>> int(12.34)
12
>>> float('12.34')
12.34
>>> str(1.23)
'1.23'
>>> unicode(100)
u'100'
>>> bool(1)
True
>>> bool('')
False
函数名其实就是只想一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个别名。

>>> a = abs # 变量a指向abs函数
>>> a(-1) # 所以也可以通过a调用abs函数
1

二. 定义函数

1. 自定义函数:

定义一个求绝对值的函数my_abs

def my_abs(x):
    if x >= 0:
        return x
    else:
        return -x
2. 空函数:

如果想定义一个什么事都不做的空函数,可以用pass语句:

def nop():
    pass

if age >= 18:
    pass

3. 参数检查:

数据类型检查可以用内置函数isinstance实现:

def my_abs(x):
    if not isinstance(x, (int, float)):   # 只允许整数和浮点数类型的参数
        raise TypeError('bad operand type')
    if x >= 0:
        return x
    else:
        return -x

4. 返回多个值:

函数可以返回多个值吗?答案是肯定的。

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.961524227 70.0
但其实这只是一种假象,python函数返回的仍然是单一值:

r = move(100, 100, 60, math.pi / 6)
print r       # (151.96152422706632, 70.0)
原来返回值是一个tuple!但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接受一个tuple,按位置赋给对应的值。

所以,python的函数返回多值其实就是返回一个tuple

三. 函数的参数


四. 递归函数


python学习笔记(二) - 函数