今天学习了python中的函数,函数和方法的区别在于:函数写在类外,方法写在类里。调用函数使用类名,调用方法需要实例化对象!此篇博客主要讲述自定义函数。
函数语法:
def funcname(parameter_list):
pass
- 通过有无参数可分为有参函数和无参函数
- 通过有无返回值可分为有返回值函数和无返回值函数
函数在定义过程中可以定义多个变量,return返回也可以返回多个值,除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。
def area(a, b, c):
return (((a + b + c) * (a + b - c) * (a + c - b) * (b + c - a))**(0.5)) / 4
def perimeter(a, b, c):
return a + b + c
a = float(input("请输入三角形第一个边边长:"))
b = float(input("请输入三角形第二个边边长:"))
c = float(input("请输入三角形第三个边边长:"))
print("面积为:", area(a, b, c))
print("周长为:", perimeter(a, b, c))
该函数传入abc三个值,通过两个函数分别计算三角形的面积(海伦公式)和周长,返回1个值。
def jiuJiu():
for i in range(1, 10):
for n in range(1, i + 1):
j = i * n
print(i, "*", n, "=", j, end="\t")
print("")
jiuJiu()
该函数无参,无返回值,直接在函数内部print内容(九九乘法表)
def jisuan(a):
i = 0
b = []
for i in range(0, a + 1):
if (i % 5 == 0 or i % 6 == 0) and i % (5 * 6) != 0:
b.append(i)
i += 1
return b
a = int(input("请输入最终值:"))
print(jisuan(a))
该函数返回一个list
一般来说还是有参有返回值的函数比较常用,例如MD5加密。
注:函数通过压栈方式调用,执行完立刻弹栈释放内存
递归函数:
递归理念展示:
递归:自 身 调 用 自 身
代码展示:
def ji(max):
if max <= 950 and max > 0:
i = int(ji(max - 1))
b = max * i
return b
else:
return 1
a = int(input("请输入要求到的值:"))
print(ji(a))
该代码使用递归的方式求从1到输入数字的积,因为递归时不停的压栈会对内存造成很大负担,因此在递归超过1000次时,系统会自动报错停止。因此判断条件中有if max <= 950
匿名函数:
语法为:
lambda parameter_list: expression
等同于:
def ***(parameter_list):
return expression
匿名函数简化了代码,但是降低了可读性,在团队项目中对其他成员不友好。
总结
除了自定义函数之外,python本身还有一大堆的全局函数,还可以通过import其他类库来调用其他开发者写好的函数或方法。同时因为python本身弱数据类型的特性,python可以将其他函数当做参数传进另一个函数内运行。
另:按照PEP8代码规范,自定义函数与其他代码直接需间隔2行!