函数进阶
编程真正常用的是基于简单函数的复杂函数,需要对其真正理解和熟悉后,并经常应用才能牢记并会使用。
- 变量作用域
- 概括
- 可变数据类型使用方法或者全局声明可以对外部造成影响。
- 传参进来,可以修改,但是不会影响到外部的变量
- 当数据直接在函数使用是不可更改的,除了方法对可变参数除外,例如:变量.操作(): 方法 例如:a.sum()
- 变量分类
- 全局变量
- 全局变量可以在函数中被调用
- 类型
- 全局变量是不可变类型时,在函数不能被直接操作会报错,但被其他变量调用时不会报错
- 全局变量是可变类型时,在函数被直接操作会不报错
- global 声明变量为全局变量
- 声明一个变量为全局变量,进行操作会影响到外面的变量
- 不可变类型参数传入函数,进行的操作不会影响到外面的变量
局部变量
- 局部变量:函数中的局部变量只能对函数起作用,作用效果优于全局变量
- 全局变量
- 变量类型
- 变量是不可变数据类型 -可读不可写
- 变量是可变数据类型-可读可写的
- 多函数执行流程
多函数执行时如果中间涉及到了全局变量的更改,会影响到后面函数执行中的变量的情况
- 函数的返回值
- 返回值是一个参数,则返回类型根据实际情况来决定返回值类型
- 如果返回多个参数,会被按顺序存放到元组中
- 如果返回值是一个 接收参数为一个
- 如果返回值是多个 接收参数为一个或者是返回的个数
- 取值
- 可以用索引一个一个取出
- 可以用拆包的方式分别取出变量
- 函数的参数
使用函数要变量与定义函数的变量个数一致,否则报错
- 参数类型
- 实参--实际参数
- 形参--函数中的定义参数
- 关键字传参
- 关键字传参可以不按照顺序输入
- 关键字参数一定全部写在最后面
- 如果有一个关键传参没写,但是顺序没错,也能识别,不会报错
- 但如果一个关键传参没写,但是顺序错聊了,就会报错
- 默认参数
- 不写使用默认参数 写了使用传入参数
- 在定义函数是就已经为定值了
- 默认参数要定义的参数后面全部是默认参数,否则就报错
- 这样的好处是可以值输入一个变量,函数也能运行不报错
- 不定长传参
- *args 把没有形参的实参进行打包(*args是包本身 )
- 其实就是再不确定形参个数下进行打包在函数下执行函数
- 打印args,数据是元组类型
- 还可以对其中输出数值进行取值
- 当对含*的*args 的打印时,就不是元组,是数据本身
- **kwargs ,把没有形参的实参进行打包 只打包关键字参数
- 如果使用函数中关键字,不会报错
- 如果没有使用函数中关键字,会报错
- kwargs 是字典类型(取值也遵守字典的规则,取出Key,得到value)
- 拓展:不定长传参可以不光用\*args 和\**kwargs ,用别的字母也可以,这是目前默认用这个两个,方便大家阅读程序方便
- *args 把没有形参的实参进行打包(*args是包本身 )
- 拆包和交换值的数据
用赋值的形式,进行交换值 a, b = b, a
- 可变不可变类型
- 可变
- 列表
- 字典
- 集合
- 不可变
- 数字
- 字符串
- 元组
- 布尔
- .......
- type类型显示类型
- 1个是常规的类型
- 3个是面向对象的(类名称,类继承对象,类的属性方法)
- type对其操作后发现整体已经是所属的类了,然后对其再取值,就相当于对另一种所属类的操作了
标签:02,函数,编程,第六周,参数,类型,报错,全局变量,变量 From: https://www.cnblogs.com/qipaxiaopao/p/16972479.html