python学习之第十六课时--函数的作用及定义

 

例子:

当我们知道半径r的值时,就可以根据公式计算出面积,假设我们需要计算3个不同大小的圆的面积:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
r1=2.34
r2=7.28
r3=10.32
s1=3.14*r1*r1
s2=3.14*r2*r2
s3=3.14*r3*r3

 

当代码有规律的重复的时候,每次写3.14*x*x不仅很麻烦,而且如果要把3.14改成3.14159的时候得全部替换

有了函数,我们不再每次写s=3.14*x*x,而是写成更有意义的函数调用s=area(x),而且函数area本身只需要些一次,就可以多次调用

 

 

抽象是数学中非常常见的概念,举个例子

计算数列的和,比如1+2+3+.....+100,写起来十分不方便,于是数学家发明了求和符号Σ,可以把1+2+3+...100叫作:

这种抽象记法非常强大,因为我们看到Σ就可以理解成求和,而不是还原成低级的加法运算

写计算机程序也是一样,函数就是最基本的一种代码抽象的方式

函数最重要的目的是方便我们重复调用相同的一段程序

 

Python不但能非常灵活地定义函数,而且本身内置了很多有用的函数,可以直接调用

 

 

函数的定义

python中,定义一个函数要使用def语句,依次写出函数名,括号,括号中的参数和冒号,然后在缩写块中编写函数体,函数的返回值用return语句返回

 

 

 

例如:

 

我们以自定义一个求绝对值的Numbers函数为例

 


#!/usr/bin/env python
# -*- coding:utf-8 -*-
def Numbers(x):
    if x>=0:
        return x
    else
        return -x
    
#此函数的功能是求两个数的平方和
#首先def,这个关键字通知python,我要定义一个函数,Numbers是函数名,括号中的x的函数的参数,是对函数的输入
#参数可以一个或多个,也可以完全没有,但是括号要保留
if x>=0:     #表示这一句判断x的大小,从而运算那个语句
else#如果if后条件为假执行这一语句
return x    #返回c的值,也就是输出的功能,python的函数允许无返回值,也就是不用return

return a,b,c     #相当于return (a,b,c)


 

函数体内部的语句在执行时,一旦执行到return语句时,函数就执行完毕,并将结果返回

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

 

 

python中,当程序执行到return的时候,程序就停止执行函数内余下的语句

 

Nonepython中的一个特别的数据类型,用来表示什么都没有,相当于c语言的NULL,NOne多用于关键字参数传递的默认值

 

 

函数的调用

 

要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs。它接收一个参数

可以直接从python的官方网站查看文档:

http://docs.python.org/2/library/function.html#abs

也可以在交互命令行通过help(abs)查看abs函数的帮助信息

 

 

函数的返回值

 

返回单值

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-
def Numbers(x):
    if x>=0:
        print(x)
    else:
        print(-x)
Numbers(-5)

 

 

返回多值

 

math包提供了sin()cos()函数,我们先用import引用它

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import math
def Move(x,y,step,angle):
    xx=x+step*math.cos(angle)
    yy=y-step*math.sin(angle)
    return xx,yy

x,y=Move(100,100,60,math.pi/6)
print x,y
打印  151.961524227 70.0

 

其实这是一种假象,python函数返回的仍然是单一值

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import math
def Move(x,y,step,angle):
    xx=x+step*math.cos(angle)
    yy=y-step*math.sin(angle)
    return xx,yy

print(Move(100,100,60,math.pi/6))
#打印   (151.96152422706632, 70.0)

 

print打印返回结果,原来返回值是一个tuple

:在语法上,返回一个tuple可以省略括号,而多个变量可以同时接受一个tuple,按位置赋给对应的值,所以python函数返回多值其实就是返回一个tuple,但写起来更方便

 

posted @ 2017-11-05 18:09  LQ6H  阅读(955)  评论(0编辑  收藏  举报