python学习笔记之函数

python学习笔记之函数

昨日内容回顾

函数的定义与调用

函数必须先定义后调用

调用函数时,函数名后面必须带上括号

函数的分类

内置函数:python解释器提前定义好的

自定义函数:

  1. 无参函数 括号内没有参数
  2. 有参函数 括号内有参数
  3. 空函数 函数体代码用pass占位

函数的返回值

获取函数的返回值需要用一个变量名接收

return后面是什么,就会返回什么。

return会结束掉函数的运行

函数的参数

形式参数

函数定义阶段括号内写入的参数

实际参数

函数调用阶段,对传入的数据,值

位置参数

位置形参

定义阶段从左往右依次填写的变量名

位置实参

调用阶段从左往右依次填写的数据,值

关键字实参

选择形参对齐进行绑定的数据,值

默认形参

函数定义阶段,赋予形参的值,当没有实参传入形参时,形参机会使用默认值。

可变长参数

在函数形参中,用于接收多余的位置参数,多余的参数会被组织成一个元组

**

形参中,用于接收多余的 a = 1 形式实参,会自动转换为字典。

*在实参中。会对值进行类似for循环,组织成一个元组

**在实参中。会将字典打散成v值。

今日内容概要

名称空间

存放变量与变量值的绑定关系的地方

内置名称空间

python解释器提前定义好的变量,函数

print,input,len等

全局名称空间

在单个py文件中,编写的变量名或函数名会存到全局名称空间中

a = 1

b = 'eason'

局部名称空间

函数体代码运行产生的变量名或者函数名都是局部空间。

def eason():
    a = 1  # a就是局部名称空间

存活周期

  1. 内存名称

    python解释器运行则产生

    python解释器关闭则销毁

  2. 全局名称空间

    py文件运行则产生

    py文件结束则销毁

  3. 局部名称空间

    函数体代码开始运行则产生

    函数体代码结束运行则销毁

名字的查找顺序

在局部名称空间中

  1. 局部名称空间
  2. 全局名称空间
  3. 内置名称空间

在全局名称空间中

  1. 全局名称空间
  2. 内置名称空间

哪怕三个空间都有相同的函数名,也是按照这个顺序查找

如果函数没有被调用,那么不管函数体有多么复杂,函数体是什么也不用太先去在意!

局部名称之间如果不是嵌套关系,那么就互不干涉!

作用域

作用域就是名称空间能够作用的范围

内置空间:全局可使用

全局名称空间:全局可使用

局部名称空间:局部可用

global与nonlacal关键字

global:局部修改全局不可变类型

a = 1
def 变量名():
    global a
    a = 2
调用一次该函数,a的值在全局将为2

nonlocal:局部修改局部

def f1():
    a = 1
    def f2():
        nonlocal a
        a = 2
    f2()
    print(a)
f1()

改变上一层嵌套的值

函数名的多种用法

  1. 函数名可用直接当变量名赋值

  2. 函数名也可以作为函数的实参

  3. 函数名也可以作为函数的返回值

  4. 函数名可以作为容器的元素

    可存储多个元素的数据类型

函数的嵌套

函数的嵌套调用

def gain():                                         
    name = input('name')                            
    password = input('password')                    
    return name, password                           
                                                    
                                                    
def log_in():                                       
    name, password = gain()                         
    if name == 'eason' and password == '123':       
        print('登录成功')                               
                                                    
log_in()                                            
调用一个函数,函数内部可以再调用多个函数的叫做嵌套。

调用一个函数,函数调用自己的叫做递归。

函数调用函数,叫做函数做为实参。

今日小结

明天学装饰器。

posted @ 2022-03-17 19:55  Eason辰  阅读(63)  评论(0)    收藏  举报