python 函数,,1.概念由若干条语句


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})    #解构出keysum_(**{‘a‘:1,‘b‘:2})    #解构出关键字传参key=value

实参的参数解构

实参前面加星号,表示将后面的可迭代对象里的元素作为位置参数传入

7.函数返回值

函数执行过程中碰到return语句就代表这个函数执行完毕没有return的函数,默认返回None一个函数就算有多条return ,也只会执行一个返回值的作用:结束函数调用,返回返回值

8.函数的作用域

通常指的是变量的作用域
作用域分类
全局作用域
在整个程序运行环境中都可见全局作用域中的变量称为全局变量global
局部作用域
在函数/类的内部可见局部作用域中的变量称为局部变量,其使用范围不能超过其所在局部作用域也称为本地作用域local

一般外部作用域在内部可见,内部作用域外部不可见

向内穿透,就近选择

global使用原则

外部作用域变量会在内部作用域可见,但也不要在这个内部的局部作用域中直接使用,因为函数的目的就是为了封装,尽量与外界隔离如果函数需要使用外部全局变量,请尽量使用函数的形参定义,并在调用传实参解决一句话:不用global,学习他就是为了深入理解作用域

闭包

概念
自由变量
未在本地作用域中定义的变量。例如定义在内层函数外的外层函数的作用域中的变量
闭包
就是一个概念,出现在嵌套函数当中,指的是内层函数引用外层函数的自由变量,就形成了闭包

python 函数

评论关闭