#-*- coding:UTF-8 -*-# python中定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后在缩进块中写函数体,# 函数的返回值用return返回 def my_abs(x): if x>=0: return x else: return -x #如果没有return语句,函数执行完毕也会返回结果,结果为None# return None 可以简写为return # 定义一个什么都不做的空函数,可以用pass语句 def nop(): pass# 调用函数时,如果参数个数不对,python解释器会自动检查出来,跑出TypeError# my_abs(1,2)# TypeError: my_abs() takes exactly 1 argument (2 given)#如果参数类型不对,Python解释器无法帮我们检查。# my_abs('A')#内置函数 abs会检查出参数错误 abs('A')# TypeError: bad operand type for abs(): 'str'# 修改一下my_abs的定义,对参数类型做检查,只允许整数和浮点数类型的参数,数据类型检查可以用内置函数instance实现:def my_abs(x): if not isinstance(x,(int,float)): raise TypeError("bad operand type") if x>=0: return x else: return -xmy_abs('A') # TypeError: bad operand type# 返回多个值import mathdef move(x,y,step,angle=0): nx=x+step*math.cos(angle) ny=y=step*math.sin(angle) return nx,nyx,y=move(100,100,60,math.pi/6)print x,y#同时获得返回值151.961524227 30.0#其实这只是一种假象,返回的是单一直r=move(100,100,60,math.pi/6)print r# (151.96152422706632, 29.999999999999996)#返回值原来是一个tuple