函数:就是完成特定功能的代码段html
将重复的代码段封装成函数,能够提升代码利用率和实现抽象python
一、Python提供了大量的内置函数函数
关于python的内置函数使用,能够参官网上的文档库https://docs.python.org/2/library/index.html,命令行
中文版文档库http://python.usyiyi.cn/translate/python_278/library/functions.html
固然,也能够在交互命令行下,输入help(),而后输入帮助信息,退出帮助用Ctrl+Ccode
#!/usr/bin/env python #-*- coding:utf-8 -*- # ★常见内置函数之abs(n)==》绝对值 print abs(-20.1) # print abs(-20,9) # 报错信息 # print abs('a') # 报错信息 # 常见内置函数之cmp(x,y)==》比较大小:x<y返回-1,x=y返回0,x>y返回1 print cmp(2,3) print cmp(2,2) print cmp(2,1) print cmp(u'中文',2) # 字母对应的ASCII值 #常见内置函数之类型转换int(),float(),str(),unicode(),bool() print int("123") # 全数字 # print int("123") # 报错信息 print str(123) # 全数字 print unicode('abc') # ★函数名其实就是指向一个函数对象的引用,能够把函数名赋给一个变量,至关于给这个函数起了一个“别名” len_str = len len_list = len print len_str("abcd") print len_list([1,2,3,4])
运行效果:htm
二、Python内置的函数只能协助解决部分问题,实际中最经常使用到的是自定义函数,将重复性高的代码段,本身封装成函数,以简化操做。同时自定义函数时应注意一些问题。对象
# ★★★自定义函数 PI = 3.14 def area_of_circle(r): if r <= 0: return None else: return PI * r * r print area_of_circle(2) # 自定义函数须要使用def语句,冒号后的代码块中写函数体 # 函数遇到return,当即结束,并返回结果。若是没有return,函数执行完毕,会自动返回None;return None等同于return # ★空函数 # 若是想定义一个什么也不作的函数,或者函数体还没想好的函数,此时能够定义成一个空函数 def get_a_girlfriend(): pass print get_a_girlfriend() # pass语句表示什么也不作,经常使用做占位符或内容没想好的地方 if 19 >= 18: pass # ★参数检查==》借助内置函数isinstance() # 解释器能够对自定义函数进行参数个数检查,可是不会进行参数类型检查,如今为完善自定义函数,自行设置参数检查 # 对area_of_circle(r)函数设置参数检查,传入的参数只容许是int和float PI = 3.14 def circ_of_circle(r): if not isinstance(r,(int,float)): raise TypeError("bad operand type! only for int or float!") if r <= 0: return None else: return 2 * PI * r # print circ_of_circle('a') # 查看报错 print circ_of_circle(2) # ★函数同时返回多个值 # 须要提早说明的是,Python函数确实能够同时返回多个值,这点与其余语言有点不同 # 导入Python内置的模块用关键字import。例如import 模块名。具体到某个方法能够用from 模块名 import 方法名 # 对于第一种,访问该模块内方法时须要模块名.方法名。第二种能够直接使用方法名 # 建立一个移动的点的位置坐标.参数是起始点坐标,位移大小,角度 import math def Point_Move(x, y, displace, angle): xx = x + displace * math.cos(angle) yy = y - displace * math.sin(angle) return xx, yy nx, ny = Point_Move(100,100,20,math.pi / 6) print nx, ny # 从上看出,咱们确实同时获得了两个返回值 print Point_Move(100,100,20,math.pi / 6) # 可是,这句的返回值倒是一个tuple类型的值【本质上返回的就是一个tuple】 nx, ny = Point_Move(100,100,20,math.pi / 6) print nx # 这句话说明返回的tuple能够由几个变量同时、分别对应接收【本质上返回的是tuple,可是写成返回多个值更方便分析数据】
运行效果:utf-8