python 高级语法 - 函数
作者:互联网
前言:
圆的面积计算公式为:
S = πr2
假设我们需要计算3个不同半径的圆的面积:
r1 = 1.1
r2 = 2.2
r3 = 3.3
s1 = 3.14 * r1 * r1
s2 = 3.14 * r2 * r2
s3 = 3.14 * r3 * r3
观察 s1,s2,s3 的计算过程,π 的值 3.14 是不变的,只是半径变而已,所以计算的过程中就会出现重复使用 π。
写一个圆面积计算函数:
def area_of_circle(x):
return 3.14*x*x # x 为半径
r = area_of_circle(1.1) # 调用 area_of_circle 函数,只需要输入半径即可
print(r)
函数area_of_circle本身只需要写一次,就可以多次调用。
Python不但能非常灵活地定义函数,而且本身内置了很多有用的函数,可以直接调用。
抽象
抽象是数学中非常常见的概念。举个例子:
计算数列的和,比如:1 + 2 + 3 + ... + 100,写起来十分不方便,于是数学家发明了求和符号∑,可以把1 + 2 + 3 + ... + 100记作:
100
∑n
n=1
这种抽象记法非常强大,因为我们看到 ∑ 就可以理解成求和,而不是还原成低级的加法运算。
而且,这种抽象记法是可扩展的,比如:
100
∑(n2+1)
n=1
还原成加法运算就变成了:
(1 x 1 + 1) + (2 x 2 + 1) + (3 x 3 + 1) + ... + (100 x 100 + 1)
可见,借助抽象,我们才能不关心底层的具体计算过程,而直接在更高的层次上思考问题。
函数的使用
- 定义函数
def 函数名(参数):
代码1
代码2
return 表达式
定义函数的过程中,需要注意以下几点:
- 函数代码块以def关键词开头,一个空格之后接函数标识符名称和圆括号(),再接个冒号。
- 任何传入的参数必须放在圆括号中间。
- 函数内容以冒号起始,并且缩进。
- 使用return结束函数。默认返回None。
- return语句依然在函数体内部,不能回退缩进。直到函数的所有代码写完,才回退缩进,表示函数体结束。
如何调用函数
函数写出来就是给其他地方调用的,要调用一个函数,必须使用函数名后跟圆括号的方式才能调用函数。
函数名(参数)
根据实际情况,参数可有可无。
先定义函数,后调用函数。
函数的参数作用
完成需求如下:完成两个数 3 和 5 的相加
# 定义函数
def add():
return 3 + 5
print(add()) # 调用函数
上诉函数只完成了 3 和 5 的相加,如果想要这个函数变得更灵活,可以计算任何用户指定的两个数字的和,要进行以下修改。
把两个值设置为变量
# 定义函数时同时定义了接收用户数据的参数a和b,a和b是形参
def add(a, b):
return a + b
print(add(3, 8)) # 调用函数的时候,需要传入两个参数,分别传给 a 和 b
- 形参:函数定义时书写的参数(非真实数据)
- 实参:函数调用时书写的参数(真实数据)
def add(a, b):
return a + b
x, y = 8 ,9
print(add(x, y)) # 17 使用变量,传递参数。
print(add(8, 9)) # 17 直接传递值也是可以的。
在上面的例子中,a,b叫做形式参数,简称形参。
而x,y和8,9 叫做实际参数,简称实参,也就是实际要传递的值。
我们通常讨论的参数,指的都是形参。
函数嵌套使用
def testB():
print('---- testB start----')
print('这里是testB函数执行的代码......')
print('---- testB end----')
def testA():
print('---- testA start----')
testB() # 调用函数testB
print('---- testA end----')
testA()
"""
执行结果:
---- testA start----
---- testB start----
这里是testB函数执行的代码......
---- testB end----
---- testA end----
"""
执行流程:
遇到函数不执行,调用函数才执行。
- 首先调用了函数 testA()
- 执行testA()函数的过程中,遇到函数 testB()
- 调用了函数 testB(),执行 testB()
函数的应用
计算三个数之和
def sum_num(a, b, c):
return a + b + c
result = sum_num(1, 2, 3)
print(result) # 6
计算三个数的平均值
def sum_num(a, b, c):
return a + b + c
def average_num(a, b, c):
sumResult = sum_num(a, b, c)
return sumResult / 3
result = average_num(1, 2, 3)
print(result) # 2.0
随机生成20个学生的成绩,判断这20个学生成绩的等级.
import random
def get_level(score):
if 90 < score <= 100:
return '非常优秀'
elif 80 < score <= 90:
return '优秀'
elif 60 < score <= 80:
return '及格'
else:
return '不及格'
def main():
# scores = []
# 生成所有的成绩;
# for count in range(20):
# scores.append(random.randint(1, 100))
for i in range(20):
score = random.randint(1, 100)
# 调用函数
level = get_level(score)
print("成绩:%s, 等级: %s" % (score, level))
if __name__ == "__main__":
main()
标签:----,return,函数,python,语法,testB,print,def 来源: https://www.cnblogs.com/wwho/p/15698320.html