- 结构化编程与非结构化编程
非结构化编程:一组逻辑在同一代码实现
结构话编程:一组逻辑在不同代码实现,通过相互调用配合使用 - 函数的一般形式
def 函数名(形式参数):
函数的使用: 函数名(实际参数)
1.def define
2.符合函数名命名规范(第一个单词首字母小写,以后的单词首字母大写)
3.(参数) 形参,形式参数,形参列表,参数列表
4.函数名(实际参数)
-
函数的运行机制
当函数调用的时候,虚拟机会找到函数定义的位置,跳转到函数内部,依次执行,执行完之后返回函数的调用处. -
函数的特点
- 避免代码冗余
- 提高了程序的可重用性
- 提高了程序的可维护性
- 提高了程序的灵活性
- 函数的定义
- 函数要先定义后使用 (定义后加载到内存中)
- 函数可以定义到另一个函数的内部
- 函数的作用域:从函数定义时开始,到其所包含的代码块结束
- 函数的返回值
- 没有返回值的时候,系统自动返回 return None.
- 需要返回值,return 返回值
- return后面的代码不执行,return返回函数的调用处
- 当需要返回多个返回值时,用逗号隔开,以元组的形式返回
- 参数
- 一个参数
- 多个参数 :用逗号隔开
- 传参的方式
- 位置传参
- 默认参数
- 收集参数
- 关键字参数
- 关键字收集参数
def fun(a,b):
print(a,b)
fun(1,2)
>1 2
- 关键字传参
def fun(a,b):
print(a,b)
fun(b=1,a=2)
>2 1
- 同一参数重复赋值会报错
def fun(a,b):
print(a,b)
fun(1,a=2)
>TypeError: fun() got multiple values for argument 'a'
- 函数的变量
全局变量:定义在文件的最外层,作用范围:整个文件都可以使用
局部变量:定义在函数内部, 作用范围:从开始,到其所执行的代码块结束
当冲突的时候,在局部的作用范围时,以局部为准
- global和nonlocal
- global影响全局变量
a=10
def fun():
global a
a=1
print(a)
fun()
>1
- nonlocal影响的是外层函数的局部变量
a=10
def fun():
a=5
def fun1():
nonlocal a
a=1
fun1()
print(a)
fun()
>1
- 内嵌函数
定义:一个函数内部定义另一个函数
def fun():
def fun1():
print("this is in fun1")
fun1()
print("this is in fun")
fun()
>this is in fun1
this is in fun
- 函数的嵌套
定义:一个函数中调用另一个函数
注意:可以先使用后定义
def fun():
print("this is in fun")
fun1()
def fun1():
print("this is in fun1")
fun()
>this is in fun
this is in fun1
- lambda函数
意义:当函数使用一次的时候,又不想写函数
使用:如果有多个变量,用逗号隔开
l=lambda a,b:a+b
print(l(1,2))
>3
- map函数
使用:map(函数,*iterable)
list(map(lambda a:a+2,[1,2,3]))
[3,4,5]
可以使用多个iterable,不过操作的时候需要用括号括起来