函数的参数、名称空间知识

昨日内容回顾

  • 硬盘操作数据的原理

    数据在计算机硬盘上保存时是一次性的,数据保存后即不可能再对这段数据内部进行修改。计算机数据的删除实质是对保存数据部分硬盘状态的修改,由占有态转换为自由态,原本的数据被覆盖之前保持存在。

  • 修改数据的两种方式

    覆盖写 原地覆盖写入新数据

    替换写 在另一块空间写入数据,删除原文件,将新文件重命名为原文件名字

  • 函数的基本构成

    def 定义函数的关键字

    函数名 相当于变量名,调用函数时使用函数名加括号

    参数 参数可有可无,但定义与调用时须同一,定义时有则调用时也要传参数

    函数注释 说明函数的主要功能或使用方法

    函数体代码 函数的核心部分,完成函数功能的主体

    return 函数的返回值,函数执行后返回的结果。不规定返回值时返回值默认为None,范围值为单个数据值 时,返回值为多个数据值时,将多个数据组织成元组返回。

  • 函数的分类

    空函数 无实际功能,仅在搭建架构时提示功能,函数体代码用pass或'...'充数。

    无参函数 调用时不需要传参数的函数。

    有参函数 调用时需要传参数的函数。

  • 函数的定义与调用

    函数必须先定义后调用;

    函数定义阶段仅检测语法结构,并不执行函数体代码;

    定义时有几个形式参数,调用时就需要传几个实际参数。

  • 位置参数与实际参数

    位置参数相当于变量名,尽量做到见名知义,方便调用者传参;

    实际参数相当于数据值,在函数运行时与位置参数临时绑定,函数运行结束后解除绑定。

今日内容概要

  • 位置参数
  • 默认参数
  • 可变长参数
  • 名称空间
  • 名称的查找顺序

今日内容详细

位置参数

函数传参数的基本原则

简单的、短的传参文本在前,复杂的、长的传参文本在后。

位置形参与位置实参

位置形参与位置实参的数量必须保持一致,不一致时会报错。

可以使用关键字传参,但关键字传参文本必须在位置传参后,且同一个形参不可以多次传参。

默认参数

默认参数即在函数定义阶段就有一个默认值的参数,这种参数适用于大多数的调用场景,因此在调用时可以不需要传参数,如果需要传参数,可以根据位置传参数,也可以使用关键字传参。

可变长参数

可变长形参 *args **kwags

*args 用来接收传参时多余的传参,并将多余的实参组织成元组赋值给星号后的变量名。

**kwags 用来接收传参时多余的关键字传参,并将多余的传参以关键字为键、以实参为值组织成字典赋值给双 星号后的变量名。

可变长实参

  • '*'+字符串/列表/元组/集合/字典

    将星号后的数据用for循环取出后,依次按照位置赋值给形参。

    集合为无序数据,因此取出的数据顺序是随机的。

    字典for循环的对象是键,因此取出的数据仅为对应的键,键的相对位置不变。

  • '**'+字典

    将字典中的数据打散取出后,将字典的值为数据值按照位置进行关键字传参。

名称空间

名称空间是内存中用来存储变量名与数据的绑定关系的空间。函数名与函数体的关系类似与变量名与数据值。

名称空间的分类

内置名称空间 储存解释器运行时自动产生的名称与其代码的绑定关系。

全局名称空间 储存文件级别名称与其数据的绑定关系。文件级别名称区别于局部名称空间内的名称。

局部名称空间 储存函数体代码或类代码产生的绑定关系。

名称空间的存活周期及作用范围

内置名称空间 解释器运行时产生,解释器关闭时销毁,解释器内部任何位置均可以调用。

全局名称空间 程序文件打开时产生,文件关闭时销毁,文件内部任何位置均可以调用。

局部名称空间 函数运行时产生,函数运行结束后销毁,一般只能在函数体内部调用。

名称的查找顺序

名称的查找顺序取决于调用变量的操作所在的层级。默认情况下,优先在调用位置同一层级查找,若当前层级查找不到,则去上一层级查找。层级的从上到下的关系如下:

内置名称空间>>>全局名称空间>>>局部名称空间>>>局部名称空间下产生的子空间

相互独立的局部名称空间默认不可以互相访问。

python程序代码默认从上往下读取,在同一层级名称空间内必须要先定义才能调用。即时在上一层级中有对应的名称,本层级下方若有同一名称出现,在当前位置调用时依然会报错。

posted @ 2022-10-10 18:45  Akazukis  阅读(55)  评论(0)    收藏  举报