#函数基础
def
printhello():
# def 定义函数
print
(
'hello python'
)
#函数执行部分
def
printNum():
for
i
in range
(
0
,
10
):
print
(i)
return
def
add(a,b):
return
a+b
printhello()
#调用函数
print
(printNum())
print
(add(
1
,
2
))
#定义函数并函数调用
#把my_abs()的函数定义保存为funct.py文件中
from
funct
import
my_abs
#用
from afunct import my_abs来导入my_abs()函数
,注意funct是文件名(不含.py扩展名)
b=my_abs(-
12
)
print
(b)
# 12
def
m():
#定义空函数
pass
#实际上pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来
import
math
#import math语句表示导入math包
,并允许后续代码引用math包里的sin、cos等函数
#返回多个值得函数
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
)
#Python的函数返回多值其实就是返回一个tuple
print
(r)
#结果 (151.96152422706632, 70.0)
#递归函数
#如果一个函数在内部调用自身本身,这个函数就是递归函数
def
fact(n):
#定义一个求阶乘的函数
if
n==
1
:
return
1
else
:
return
fact(n-
1
)*n
b=fact(
5
)
print
(b)
#结果是120
#使用递归函数需要注意防止栈溢出。
# 在计算机中,函数调用是通过栈(stack)这种数据结构实现的
# 每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。
# 由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出