文章目录
定义函数
def functionName(paramters):
function_body
[return]
调用函数
funcName([paras])
返回值
不管有没有 return 函数都会返回
有 return 时函数返回相应的值
没有 return 时函数返回 None
return None
可以简写为return
返回多个值
python 函数可以返回多个值
但其本质其实是返回一个多元素的Tuple,因为语法上tuple可以省略括号,所以看起来像返回多个值
如果显式的返回一个list,dict,tuple,set,则是返回值本身
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.96152422706632 70.0
>>> r = move(100, 100, 60, math.pi / 6)
>>> print(r)
(151.96152422706632, 70.0)
空函数
空函数可以作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。
def func():
pass
参数
参数检查
python解释器会检查参数
个数
,但不会检查参数类型
类型检查需要自己做
可以使用内置函数isinstance(obj,class_of_tuple)
并抛出错误
def my_abs(x):
return x if x >= 0 else -x
# 添加检查类型
def my_abs(x):
if not isinstance(x, (int, float)): # 检查类型
raise TypeError('bad operand type') # 抛出错误
return x if x >= 0 else -x
isinstance()
isinstance(被检查对象,检查类型元组)
isinstance() 接受两个参数,第一个是被检查对象,第二个是要求的类型元组
类型元组中只要有一个被满足,则返回True,反之返回False
默认参数、可变参数和关键字参数
默认参数 =
def funcName( [para1 ... ,] paraN = defaultValue)
当参数的值不确定的时候,就可以使用默认参数默认参数
para1 = defaultValue
必须放在最后面
当有多个默认参数的情况下,想指定某个默认参数不使用默认,可以将默认参数的形参名带上
默认参数必须指向不变对象!
def power(x,n=2):
s = 1
while n > 0:
s *= x
n -= 1
return s
>>> power(5)
25
>>> power(5, 2)
25
>>> power(5, 3)
125
当有多个默认参数的情况下,想指定某个默认参数不使用默认,可以将默认参数的形参名带上
def enroll(name, gender, age=6, city='SWA'):
print(name)
print(gender)
print(age)
print(city)
>>> enroll('Boii', 'M', 23, 'BJ')