1、在Python中,定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。
#自创一个求绝对值的函数
def my_abs(x):
if x >= 0:
return x
else:
return -x
一旦遇到return函数就执行完毕并返回值。如果没有return语句,函数执行完毕后也会返回结果,只是结果为 None。
return就是将值返回给调用函数的地方
2、请定义一个 square_of_sum 函数,它接受一个list,返回list中每个元素平方的和
def square_of_sum(L):
return sum(x*x for x in L) #先定义好元素平方的值
print (square_of_sum([1, 2, 3, 4, 5])) #直接调用定义好的求平方,然后用sum求和
print (square_of_sum([-5, 0, 5, 15, 25]))
3、函数可以返回多个值
#从一个位置通过计算速度移动到另一个位置,可得出所需时间
def move(x,y,speed):
time = abs(x - y) / speed
return time
#这样就可以直接调用上面的函数,自己创建值
t = move(90,100,1)
print(t)
其实返回的值是一个tuple的形式,所以返回的值还是一个可能包含多个元素的元组
4、位置参数与关键字参数
def test(x,y,z)
#位置参数,必须一一对应,不可多或少
test(1,2,3) #x = 1,y = 2,z = 3
#关键字参数,无须一一对应,不可多或少
test(x = 1,z = 3,y = 2)
#位置参数必须在关键字参数左边,同样不可多或少
test(1,2,z = 3)
5、参数组arg、kwarg
# *列表(位置参数)
def test(x,*args):
print(x)
print(args)
test(1,['x','y','z'])
输出:1
(['x', 'y', 'z'],)
test(1,*['x','y','z'])
输出:1
('x', 'y', 'z')
# **字典(关键字参数)
def test(x,**kwargs):
print(x)
print(kwargs)
test(1,y = 2,z = 3)
输出:1
{'y': 2, 'z': 3}
test(1,{'y' : 2})
报错
test(1,**{'y' : 2})
输出:1
{'y': 3}
6、前项引用
#错误示范1:
def foo():
print('from foo')
bar()
foo()
#错误示范2:
def foo():
print('from foo')
bar()
foo()
def bar():
print('from bar')
#正确示范:
def bar():
print('from bar')
def foo():
print('from foo')
bar()
foo()
def foo():
print('from foo')
bar()
def bar():
print('from bar')
foo()
7、递归
def cale(n):
print(n)
if int(n / 2) == 0:
return n
else:
s = cale(int(n/2))
return s
cale(10)
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。