函数
- 函数有机会给一组语句命名
- 函数可以减少重复代码
- 一长段程序可以拆分为多个函数,组合起来使用
- 一次书写, 多次调用。
在函数内部 实参会赋值给形参的变量
1 | def print_twice(x): |
增量开发
每次只增加和测试一小部分代码,来避免长时间的调试过程
eg: 圆心坐标(x1,y1)例如(0,0),圆上一点的坐标(x2,y2)例如(2,2), 计算圆的面积。
圆的面积
1
2
3
4
5import math
def area(radius):
return math.pi * radius **2
a = area(2) # a 等于return的值
print(area(2),a)圆的半径
1
2
3
4
5
6
7
8
9def distance(x1, y1, x2, y2):
'''
计算两点之间的距离 文档字符串,一般用来简明的解释函数是用来做什么的
'''
dx = x2 -x1
dy = y2 -y1 # 临时变量,在计算中可以用来保存中间计算值
dsquared = dx ** 2 + dy ** 2
result = math.sqrt(dsquared) # 脚手架代码,构建时有用,最终可以删除
return result计算结果
1
2radius = distance(x1, y1, x2, y2)
result = area(radius)
封装成一个函数1
2
3
4def circle_area(x1, y1, x2, y2):
radius = distance(x1, y1, x2, y2)
result = area(radius)
return result
简化1
2
3def circle_area(x1, y1, x2, y2):
return area(distance(x1, y1, x2, y2))
circle_area(0, 0, 2, 2) # 25.132741228718352
递归
调用自己的函数称为 递归的函数,执行过程称为递归
无限递归,会在递归深度到上限时报错1
2
3def recurse():
recurse()
recurse() # RecursionError: maximum recursion depth exceeded
1 | def print_n(s, n): |
1 | def countdown(n): |
while 循环1
2
3
4
5
6
7
8
9def countdown(n):
if n > 100000: # 守卫,保护后面代码,避免出现错误
print('over limit')
return
while n > 0:
print(n)
n -= 1
print('haha')
countdown(10000000000000)
1 | while 1: |