python——第八天

函数本质就是功能代码的集合

 就是将完成某一功能的代码放在一起,取一个名字,等其他人【包括我】

 要实现这个功能时,我们就可以直接调用这个函数,而不用再次实现

 

 

本地变量|局部变量(local variable)和全局变量(global varable):

 之前我们写的块级作用域的变量,本质也类似局部变量

 

 

 

本地变量|局部变量(local variable):

 定义在函数内部的变量

 局部变量只能在函数内部有效!!,外界是无法访问到的

 形参也是局部变量!!!

 

 

注意:在python中,函数内部可以正常访问全局变量,但是不允许修改全局变量!!!!!

why?基于安全考虑,python禁止函数内部修改全局变量!!!

 

如果我们有需求呢?需要在函数内部修改全局变量呢?怎么办?

 如果一定要修改全局变量,可以提前声明

 在函数内部,使用global关键字进行声明

  global 全局变量 [,全局变量……]

 

 

 

函数调用的本质

 函数定义及调用的内存分析

 

 函数在执行时,首先会被加载到执行栈中(push),等函数执行完成后,会立刻

 弹出栈,保证执行栈中没有内存的消耗和内存的浪费

 

 

 

 

引用传递和值传递:

 值传递:在函数调用的时候,传递是值,函数内部的修改,不会影响外界的值,也就是实参

 引用传递:函数调用时,传递是内存地址(C语言指针),因此函数内部得到函数同一个对象

 

 

 

函数的参数:

def   fn_ame([args......]): 

pass 

默认值参数: 

对于函数中一些参数,如果调用时,参数大多数情况是一个固定值的时候,我们可以设置这个固定值方便了调用

注意:函数中,普通参数(位置参数),-定要在默认值参数之前!!

可变参数: 

表示一批参数,可以使用*变量名称来表示,简化多个参数的传递

*args 

函数会自动将这些参数包装为一个元组对象

关键字参数【命名参数】:

将参数以键值对的形式传递过来,会被函数自动包装成字典对象

注意:如果函数将来有可能需要扩展功能,建议添加可变参数和关键字参数  可以配合装饰器实现函数功能的扩展

python3.8之后,提供过了类型声明功能

可以不使用,但是一定要认识

建议使用

类型声明功能如 -->turple

函数本质是对象,所以可以当做参数,传递到函数中

在python,只要是对象就可以作为函数的参数!!!

python中,函数也是对象

这也是弱数据类型编程语言的特点和特征

匿名函数:

没有名称的函数!!!

因为python是通过缩进来表示函数体的,所以早期python是没有匿名函数的

lambda表达式:

本质就是简化函数的一种写法,在python中,如果函数题较少,我们完成使用一行代码定义这个函数

lambda [参数]:函数

 

 

你可能感兴趣的:(python)