#-*- 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 -x
my_abs('A')
# TypeError: bad operand type
# 返回多个值
import math
def move(x,y,step,angle=0):
nx=x+step*math.cos(angle)
ny=y=step*math.sin(angle)
return nx,ny
x,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