函数:
1.函数的基本概念
【1】定义:如果在开发程序时,需要某块代码多次, 但是为了提高编写的效率以及代码的 重用,所以把具有独立功能的代码块组 织为一个小模块,这就是函数.
- 我们已经接触过的函数如 input() 、print()、range()、len() 函数等等,都是 Python 的内置函数,可以直接使用。在编程语言中的函数,都可以用下图概括:
、
【2】对函数的理解
• 函数需要几个关键的需要动态变化的数据,这些数据应该被定义成函数的参数。
• 函数需要传出几个重要的数据(就是调用该函数的人希望得到的数据),这些数据 应该被定义成返回值。
• 函数的内部实现过程。
2.函数的创建和调用
【1】定义函数,也就是创建一个函数,可以理解为创建一个具有某些用途的工 具。定义函数需要用 def 关键字实现
- 定义函数
- 函数输入(参数):num1 num2
- 函数的输出(返回值):max_num
- 定义为函数下面“ ” “写的信息是函数的帮助文档
- num:int,告诉读代码的用户,num1需要改传的值是int ,如果不是也不会报错
#!/usr/bin/python3
def max_num(num1:int, num2:int)-->int: #告诉读代码的用户,num1需要改传的值是int ,如果不是也不会报错
"""
求两个数的最大值 #此处"""为帮助文档
"""
max = num1 if num1 > num2 else num2
return max
print(help(max_num))
打印帮助文档:
【2】调用函数
- 函数名(参数)
- num1=10 num2=20,
#2.调用函数 函数名(参数)
result = max_num(10, 20)
print(result)
拿出最大值:
- 定义一个什么事也不做的空函数,可以用 pass 语句;pass 可以用来作为占位符,还没想好怎么写 函数的代码,就可以先放一个 pass ,让代码能运行起来。
def login(username, password):
pass
- 定义函数时产生的参数叫形参,调用函数时产生的参数叫实参
3.函数参数的传递
【1】函数的优势:
- 降低编程的难度
- 代码重用。避免了重复劳动,提供了工作效率。
- 定义时小括号中的参数,用来接收参数用的,称为 “形参”
- 调用时小括号中的参数,用来传递给函数用的,称为 “实参”
形参是形式参数,可以任意修改
【2】函数参数的详解
- 必选参数:必须要传递的参数
- 默认参数:如果没有传递参数,使用默认参数,如果传递了参数,使用传递的参数。
- 可变参数:用户传递的参数个数可以变化的参数,一般情况下写作*args,数据以元组(tuple)的方式存储。
- 关键字参数:用户传递参数的个数可以是多个,并且每个参数需要两个信息(key-value),一般情况下使用**kwarge表示,数据以字典(dict)的方式存储。
可变参数与关键字参数在面试时经常被提问
- 默认参数:
- 形参、实参、必选参数:
- 可变参数:
多个值:
求和:
def sum_num(*arges):
# print("*args", args)
# print("args type:", type(args))
return sum(arges)
result = sum_num(10, 20, 3, 5, 8, 5)
print(result)
- 也可以换一个方式代表可变参数:
但是一般情况下建议使用*args
def sum_num(*nums):
# print("*args", args)
# print("args type:", type(args))
return sum(nums)
result = sum_num(10, 20, 3, 5, 8, 5)
print(result)
- 关键字参数:
- 三个双引号功能很多,此处为代码块注释:
4.匿名函数
【1】定义:匿名函数指一类无须定义标识符的函数或子程序。Python用lambda语法定义匿名函数, 只需用表达式而无需申明。(省略了用def声明函数的标准步骤)
【2】语法
lambda函数能接收任何数量的参数但只能返回一个表达式的值
lambda [arg1 [,arg2,.......argn]]:expression
5.递归函数
递归函数是一个自己调用自己的过程,要考虑什么时候跳出递归
return为返回函数的返回值,函数遇到return结束执行
阶乘:
#!/usr/bin/python3
def factorial(n):
if n <=1:
return 1
return n * factorial(n-1)
result = factorial(3)
print("3!=%d" %(result))