python 函数
Posted edwin_716
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,学习他就是为了深入理解作用域
闭包
概念
自由变量
- 未在本地作用域中定义的变量。例如定义在内层函数外的外层函数的作用域中的变量
闭包
- 就是一个概念,出现在嵌套函数当中,指的是内层函数引用外层函数的自由变量,就形成了闭包
以上是关于python 函数的主要内容,如果未能解决你的问题,请参考以下文章