1、函数的定义和调用
def 函数名():
函数体(需要运行的代码)
return
函数名是标识符,所以要遵循标识符的命名规则。
函数定义的过程就是完成了封装。
函数的调用就是去使用封装好的代码。
return:表示函数执行完之后,想让函数外的程序得到函数执行的结果。return的值可以是任何数据类型。当函数中的代码遇到return后会终止执行。
函数体中如果没有return,默认返回none
append和remov的返回值是none,pop函数的返回值是删除的内容
2、参数
2.1 形参和实参
参数分为形式参数和实际参数。
形式参数:在定义函数时,函数名后面括号中的变量名称叫做“形式参数”,或者称为“形参”。
实际参数:在调用函数时,函数名后面括号中的变量名称叫做“实际参数”,或者称为“实参”。
2.2 位置参数
调用函数时传入实际参数的数量和位置都必须和定义函数时保持一致,否则会报错
2.3 关键字参数和默认参数
关键字参数:在调用函数的时候,做一个关键字标识,以防传参错误。
默认参数:在函数定义时,直接给某个变量赋值,成为默认值。在调用时可以少传参数。
关键字参数和默认值参数必须放在位置参数的后
2.4 不定长参数
不知道传入的实际参数有多少个,用*表示
在形式参数前加*,位置不定长参数 2.5 关键字参数不定长
用**表示,不能接收位置参数,可以接受关键字参数。打印字典
形参不定长和关键字不定长参数都是在函数定义时加*/**,函数调用时加*表示会自动将*后的值,打散("abc"打散成了"a","b","c")—拆包,适用于元组、列表
3、作用域
3.1 分类
内置作用域:如print
全局作用域:顶格写,整个程序都可以使用
局部作用域:在函数内部,只能在函数内部使用
3.2 局部 VS 全局
局部空间(函数内)可以获取全局变量,
全局空间(函数外)不可以获取局部变量,
全局空间(函数外)不可以修改局部变量,
局部空间(函数内)可以修改函数外变量,但是需要加global,在函数内声明全局变量,否则报错
3.3 在一个函数中可以去调用另一个函数的变量
3.4 函数不能调用自己
3.5 内置函数
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表