1.函数的创建
函数是可以调用的(可能带有参数,也可能无参),它执行某种行动并且返回一个值。一般来说,内建的callable函数可以用来判断函数是否可调用。
1 >>> importmath2 >>> x = 1
3 >>> y =math.sqrt4 >>>callable(x)5 False6 >>>callable(y)7 True
注意:callable函数在python3.0中不可使用,需要使用表达式hasattr(func,_call_)代替。
运用函数实现斐波那契数列
1 #实现斐波那契数列函数
2 deffibs(num):3 result = [0,1]4 for i in range(num-2):5 result.append(result[-2]+result[-1])6 returnresult7 #掉用斐波那契函数
8 result = fibs(10)9 print(result)
1.文档化函数
为了让其他人使用该函数的时候理解,可以加注释。还有另外一种方法是直接写上字符串。实例如下:
1 deffibs(num):2 '该函数用于实现斐波那契数列'
3 result = [0,1]4 for i in range(num-2):5 result.append(result[-2]+result[-1])6 returnresult7 #查看函数说明
8 print(fibs.__doc__)9
10 -----
11 输出结果:12 D:\Python27\python.exe D:/pythonwork/test01/function_1.py13 该函数用于实现斐波那契数列
2.并非真正函数的函数
数学意义上的函数,总是在计算其参数后返回点什么。Python的有些函数却并非返回任何东西。在其他语言中,这类函数有可能有其他名字,比如过程。但是python的函数就是函数,基本在数学意义上不是。
没有return语句,或者虽有return语句但是return后面没有跟任何值的函数不返回值:
1 >>> deftest():2 ... print('hello python')3 ... #这里的return语句只起到结束函数的作用
4 ... return
5 ... print('hi python')6 ...7 >>>test()8 hello python9 >>> x = test()
hello python
>>> print(x)
None
test函数其实返回了一个值“None”
注意:千万不要被默认行为所迷惑。如果if语句内返回值,那么要确保其他分支也有其他返回值,这样一来当调用者期待一个序列的时候,就不会意外地返回None。
2.参数魔法
1.简单区分形参和实参
在python写在def语句中函数名后面的变量通常叫做函数的形参,而调用函数时提供的值是实参,或者称为参数。
2.能改变参数吗?
在函数内为参数赋值不会影响外部任何变量的值:
1 >>> deftry_to_change(n):2 ... n = 'Mr.Gumby'
3 ...4 >>> name = 'Mr.Entity'
5 >>>try_to_change(name)6 >>>name7 'Mr.Entity'
8 >>>
为了方便理解,可以不用函数模拟一下
1 >>> name = 'Mr.Entity'