本节主要讲函数。函数也可以看作是一种方法,能够去实现某种想法,比如加法等操作就是一种函数,只不过在背后被封装起来了。函数是编程中一个重要的方法,
掌握函数,就可以以编程的方式实现自己脑海中的想法。
独立功能的代码块
打包为一个小模块,在需要的时候调用
函数的使用包含两个步骤:定义
函数——封装独立的功能调用
函数——享受封装的成果重用
print()
、input()
、type()
等定义函数:
def 函数名():
函数封装的代码
def
关键字开头,后接函数名
和圆括号()
def
: 是英文define的缩写,在计算机领域指预设置的命令
函数名
应该能够表达函数封装代码的功能
,方便后续的调用函数名
的命名应该符合标识符的命名规则
字符(A〜Z , a〜z )、下划线
和数字
组成函数调用
放在函数定义
的上方 , 在类中是可以的内部
内部
,把参数当做变量
使用定义
时的参数称为形参
,调用
时被传入的参数称为实参
,
分隔参数名
进行对应传值,允许参数的顺序与声明时不一样
默认值
,如果函数调用时没有传入,则使用默认值数量
或内容
时,使用可变参数,不会进行直接命名*args
参数获取所有直接传参的参数元组
**kwargs
参数所有关键字
传参的参数字典
变量的作用域:也称变量的命名空间,由变量声明的位置
决定了该变量的作用域
只能在函数内使用
整个程序范围内使用
多层代码块中变量作用域的使用规则:
不能
在外部代码中直接使用可以
在函数体内进行访问不会改变
函数体外的全局变量获取函数体内的变量:
获取函数执行的结果
或者获取函数内的局部变量
return关键字
可以返回结果,
隔开突然修改的列表
列表
,并在函数内修改
,这时函数外的列表也会同步改变
字符串
,尽管同样在函数内修改
,函数外字符串不会发生改变
可变数据类型
时,在函数内修改,影响原数据不可变数据
类型则不会可变数据类型
:List (列表)、Dictionary (字典)、Set (集合)不可变数据类型
:Number (数字)、String (字符串)、Tuple (元组)注意:递归是一个很容易造成死循环的函数。但是,在被正确编写后,递归可能是一种非常有效且数学上优雅的编程方法。一定要设定好递归退出的条件。