---恢复内容开始---
(一)定义一个函数
def 函数名(参数):
函数体
return 返回值
例:
def mySum(x , y):
return int(x)+int(y)
print(mySum(1,2))
如果没有return语句,函数执行完毕后也会返回结果,只是结果为 None。也可以写成return
(二)python函数可以返回“多个值”(其实是个集合)
比如在游戏中经常需要从一个点移动到另一个点,给出坐标、位移和角度,就可以计算出新的坐标:# math包提供了sin()和 cos()函数,我们先用import引用它
import math
def move(x, y, step, angle):
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 70.0
这只是一种假象,Python函数返回的仍然是单一值:
r = move(100, 100, 60, math.pi / 6)
print (r)=======>(151.96152422706632, 70.0)---只是一个tuple
(三)递归函数:
计算阶乘:
def fact(n):
if n==1:
return 1
return n * fact(n - 1)
使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。可以试试计算 fact(10000)。
(四)定义可变参数:
def func(*params):
...
函数定义成这样之后我们就可以传入任意数量的参数如:func(1,2) func(1,2,3)
例:
def mySum(*params):
sum = 0
for value in params:
sum += int(value)
return sum
print(mySum(1,2,3))
打印出6
---恢复内容结束---