python 函数
1.概念
- 由若干条语句组成的语句块,他的组织代码是代码的最小单元
- 完成一定的功能
2.作用
- 最基本的封装,按照功能组织一段代码
- 可以复用,减少代码量
- 代码简洁美观,更易懂
3.函数的分类
- 内建函数 max()
- 库函数 match.ceil()
- 自定义函数 使用def关键字定义
4.定义
- 函数名
- 缩进
- return 没有缺省返回None
- 形参
5.调用
- 函数名加括号,后面跟实参
6.参数
6.1实参的传入方式
- 按照位置对应(位置传参)多了少了都不行
- 按照形参名称传参(关键字传参)多了少了都不行,无所谓先后顺序
- 不允许关键字参数在前
6.2形参的定义
- 参数缺省值(定义时给形参一个值)
- 有缺省值的参数必须在无缺省值参数后面
6.2.1可变的位置参数
- *args :可变形参,接收零个或多个参数,生成一个元组(不可变),星号后面参数名可自定义
6.2.2可变的关键字形参
- **kwargs: 尽可能收集,生成一个字典(可变),调用时要使用关键字传参,作为形参的最后一个参数
位置传参必须在关键字传参的前面
6.2.3 keyword-only
必须使用关键字传参
定义方式:
def fn(*,a,b): pass
6.2.4 positional-only
- python3.8语法
- “/” 之前只支持位置传参
- 定义方式
def fn(a,/,b): a只支持位置传参 pass
参数规则
- 参数列表参数一般顺序是: positional-only,普通参数,缺省参数,可变位置参数,keyword-only参数(可带缺省值),可变关键字参数
- 代码易读易懂
- 按照书写规范定义函数
6.3实参传入
- 函数
def sun_(*args): print(args) s=0 for x in args: s+=x return s
- 传参方式(参数解构)
sum_(*[1.,2,3]) sum_(*range(10) sum_(*[1,2], *(4,5), *{7,8}) #字典参数结构: sum_(*{‘a‘:1,‘b‘:2}) #解构出key sum_(**{‘a‘:1,‘b‘:2}) #解构出关键字传参key=value
实参的参数解构
实参前面加星号,表示将后面的可迭代对象里的元素作为位置参数传入
7.函数返回值
- 函数执行过程中碰到return语句就代表这个函数执行完毕
- 没有return的函数,默认返回None
- 一个函数就算有多条return ,也只会执行一个
- 返回值的作用:结束函数调用,返回返回值
8.函数的作用域
- 通常指的是变量的作用域
作用域分类
全局作用域
- 在整个程序运行环境中都可见
- 全局作用域中的变量称为全局变量global
局部作用域
- 在函数/类的内部可见
- 局部作用域中的变量称为局部变量,其使用范围不能超过其所在局部作用域
- 也称为本地作用域local
一般外部作用域在内部可见,内部作用域外部不可见
向内穿透,就近选择
global使用原则
- 外部作用域变量会在内部作用域可见,但也不要在这个内部的局部作用域中直接使用,因为函数的目的就是为了封装,尽量与外界隔离
- 如果函数需要使用外部全局变量,请尽量使用函数的形参定义,并在调用传实参解决
- 一句话:不用global,学习他就是为了深入理解作用域
闭包
概念
自由变量
- 未在本地作用域中定义的变量。例如定义在内层函数外的外层函数的作用域中的变量
闭包
- 就是一个概念,出现在嵌套函数当中,指的是内层函数引用外层函数的自由变量,就形成了闭包
相关推荐
世事一场大梦 2020-11-17
夜斗不是神 2020-11-17
xiaoseyihe 2020-11-16
huavhuahua 2020-11-20
Yasin 2020-11-16
xiaoseyihe 2020-11-16
千锋 2020-11-15
diyanpython 2020-11-12
chunjiekid 2020-11-10
wordmhg 2020-11-06
Morelia 2020-11-03
CloudXli 2020-11-03
文山羊 2020-10-31
comtop0 2020-10-31
pythonxuexi 2020-10-30
三石 2020-10-29
chaochao 2020-10-27
PythonMaker 2020-10-27