0%

【Python】函数入门

函数,对应C#中的方法,是在日常编程工作中最广泛使用的工具,如何巧妙地分割问题形成函数是一个程序员必不可少的素质,今天来学习Python的函数构成,了解其与C#等语言的差异,可为日后编程工作带来极大方便。

①内建函数

内建函数是Python中自带的函数,使用时需要引入(import)函数库。 当我们知道只函数名而不知其功能时,可以在交互式命令行使用help(函数名)查看帮助信息。 更多的情况下,当我们想要寻找满足需求的函数时,可以访问网站: https://docs.python.org/2/library/ 查阅相关功能。 这里小提一下类型转换函数(int()、str()等等),它们可以转换字符类型,如

1
2
3
4
5
6
7
8
>>> int('123')
123
>>> int(12.34)
12
>>> str(123)
'123'
>>> str(1.23)
'1.23'

与比较函数cmp(x,y),如果 xy,返回 1:

1
2
3
4
5
6
>>> cmp(1, 2)
-1
>>> cmp(2, 1)
1
>>> cmp(3, 3)
0

更多的函数还需要在后期开发中不断学习。

②自建函数

在Python中,定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。 我们以自定义一个求绝对值的 my_abs 函数为例:

1
2
3
4
5
def my_abs(x):
if x >= 0:
return x
else:
return -x

如果没有return语句,函数执行完毕后也会返回结果,只是结果为 None。 return None可以简写为return。

返回多值

Python的函数支持返回多值,只需在return后将值用逗号隔开即可。这样函数将返回一个Tuple链表包含多值

1
2
3
4
5
6
7
8
9
10
11
import math
def move(x, y, step, angle):#定义函数
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny
>>> x, y = move(100, 100, 60, math.pi / 6)#调用函数得到x,y</strong>
>>> print x, y #打印函数返回的值</strong>
151.961524227 70.0
>>> r = move(100, 100, 60, math.pi / 6)#调用函数得到链表r
>>> print r #打印函数返回的链表
(151.96152422706632, 70.0)

定义默认函数

python对默认函数的定义很像C#中函数的重构,即,一个函数传入值的多少可变 具体实现方法是给可不赋值的变量赋初始值,如

1
2
3
4
5
6
7
8
def power(x, n=2): #定义函数
s = 1
while n > 0:
n = n - 1
s = s * x
return s
>>> power(5) </strong>#调用函数
25

定义可变函数

如果想让一个函数能接受任意个参数,我们就可以定义一个可变参数:

1
2
def fn(*args):
print args

可变参数的名字前面有个 * 号,我们可以传入0个、1个或多个参数给可变参数:

1
2
3
4
5
6
7
8
>>> fn()
()
>>> fn('a')
('a',)
>>> fn('a', 'b')
('a', 'b')
>>> fn('a', 'b', 'c')
('a', 'b', 'c')

可变参数也不是很神秘,Python解释器会把传入的一组参数组装成一个tuple传递给可变参数,因此,在函数内部,直接把变量 args 看成一个 tuple 就好了。