day09-python中的函数

01-匿名函数

1、匿名函数:
声明格式:
函数名 = lambda 参数列表:返回值
说明:
函数名:变量名
lambda:声明匿名函数的关键字
参数列表:参数名1,参数名2,
冒号:固定写法
返回值:表达式,表达式的值就是返回值。

2、匿名函数调用
匿名函数的调用和普通函数一样
格式:函数名(实参列表)

3、补充:python中的普通函数可以有多个返回值,就是在return后返回多个值,多个值之间用逗号隔开;最终以元祖的形式返回;

02-变量的作用域

1、变量的调用过程是一个压栈的过程;
每次调用一个函数,系统就会在内存区域的栈区间去开辟空间,保存函数调用过程中产生的数据;
当函数调用完成后,对应的栈区间会自动销毁;

2、作用域:指的就是一个变量能够使用的范围

3、全局变量和局部变量
a、全局变量:声明在函数和类的外面的变量都是全局变量。
全局变量的作用域:从声明开始到文件结束;
b、局部变量:声明在函数中或者类中的变量就是局部变量
局部变量的作用域:从声明开始到函数结束,或者从声明开始到类结束;
注意:函数的参数是声明在函数中的局部变量;

4、变量同名的问题:
如果全局变量和局部变量同名,那局部变量的作用域内使用的是局部变量的值

global关键字:是在函数中声明一个全局变量
global 变量名
变量名 = 值

例子:

num2 = 10
def fun4():
    # 在局部作用域内修改全局变量;
    global num2 # 说明从这句开始后面的num2是全局变量;
    num2 = 199
    print(num2)
fun4()
print(num2)
nonlocal关键字:是在函数中声明一个外层局部的中的局部变量;
nonlocal 变量名
变量名 = 值
def fun5():
    nn = 10
    print(nn)
    # 函数中可以声明函数
    def fun6():
        # 相当于局部中的全局变量
        nonlocal nn
        nn = 20
        print(nn)
fun5()

03-递归函数

1、递归函数
就是在函数的函数体中调用函数本身,这样的函数就是递归函数

2、写递归函数的步骤
步骤1:找临界值(找到让循环结束的值/找到能够确定函数结果值)
步骤2:找关系
步骤3:找f(n)和f(n-1)的关系

3、在实际开发中,递归是能不用就不要用;递归需要不断的调用函数,开辟空间,消耗内存;

04-模块和包的使用

1、模块:就是对变量、函数、类进行封装;一个py文件就是一个模块

2、使用模块的格式:

a、 import 模块
通过模块.内容的形式去使用模块中的内容(能够使用的是全局变量、函数、类)
b、from 模块 import 模块中的内容
可以直接使用模块中的内容

c.from 模块 import *  --- 将模块中的所有内容都导入

3、对模块进行重命名
格式:

import 模块 as 新名字
form 模块 import 内容 as 新名字;

将不希望被别的模块导入(执行)的代码放到模块的这个if语句中;"if __name__ == '__main__':"
建议:函数的声明、类的声明一般写在if的外面,其他的写在if里面,(想要被外部使用的全局变量也写在外面)

每个模块都有一个''__name__"属性,这个属性的值默认就是当前模块的文件名
当当前模块正在被执行(直接在当前这个模块中点了run)的时候,''__name__''属性的值是"__main__"

你可能感兴趣的:(day09-python中的函数)