函数
2021/11/16 6:09:41
本文主要是介绍函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- 函数的作用
- 函数的语法结构
- 函数的分类
- 函数的返回值
- 参数的分类
- 位置参数
- 关键字参数
- 默认参数
- 可变长参数
- 其他类型参数
- 名称空间
- 1.名称空间分类
- 2.名称空间存活周期
- 3.名字的查找顺序
函数的作用
函数就是将具备独立功能的代码块封装成一个小模块快,之后想使用直接调用
函数的语法结构
def 函数名(参数1,参数2,...): '''说明书''' 函数体代码 return 返回值 ''' 函数必须先定义再调用 函数在定义阶段只检查语法不执行代码 只有在调用过程中才会执行代码 '''
函数的分类
通过函数的定义方式分为两大类:
- 内置函数
py解释器自带的函数,例如print()、len()... - 自定义函数
- 无参函数
- 有参函数
- 空函数
作用蛮大的,尤其是架构一些项目的时候,可以先把框架搭起来,里面的具体功能后面可以慢慢补上
函数的返回值
1.函数体代码没有return关键字 默认返回值None 2.函数体只有return,后面没有跟值 默认返回None 3.函数体代码有关键字return并且后面跟了数据 多个返回值,返回元组
参数的分类
1.形式参数 在函数定义阶段所用的参数统称为形式参数,简称'形参' 2.实际参数 在函数调用阶段,向函数名后括号传导的参数,简称'实参' 形参与实参的关系可以看成变量名和变量值的关系 两者只有在函数调用过程中才会暂时绑定在一起,调用结束后即断绑 在表现形式上,实参形式更多,形参表现形式只有变量名
位置参数
定义:按照从左往右的顺序依次填入的参数叫位置参数
- 位置形参
函数定义阶段,括号内按照从左往右的顺序依次填入的变量名 - 位置实参
在函数调用阶段括号内按照从左往右的顺序依次传入的数据值
位置形参与位置实参在函数调用阶段 按照位置一一对应绑定
位置参数在绑定时,多一个不行少一个也不行
关键字参数
定义:在函数调用阶段,用'形参名=数据值'的形式指名道姓进行传参
位置参数要打破yiyi对应的关系,借助关键字实参 def func(a, b): print(a, b) func(b=1, a=2) 形参无法接受多个值,位置实参与关键字实参混用,容易报错 # 位置参数必须在关键字参数前面 '''越简单的越靠前,越复杂的越靠后'''
默认参数
定义:函数在定义阶段,就对形参尽心赋值
1.该参数如果在调用阶段不给值,使用默认给定的值 2.该参数如果在调用阶段给定了值,则使用给定的值
可变长参数
可变长形参 # 问题1引入:函数无论传入多少位置参数都可以正常运行 格式 def func(x,y,*a): print(x,y,a) func(1,2,3,4,5,6) # 1,2,(3,4,5,6) *号在形参中就是接受多余位置的位置参数,并组织成元组的形式赋值给*号后面的变量名 # 问题2引入:函数无论传入多少关键字参数都可以正常运行 格式 def index(x, y, **b): print(x, y, b) index(y=2, x=1, u=222, k=111, l=444) # 1 2 {'u': 222, 'k': 111, 'l': 444} **号用来接受多余的关键字参数,并组织成字典的模式赋值给**后的变量名 """ 墨守成规 可变长形参 *与**后面的变量名其实是可以随便定义的 但是python中推荐使用 *args **kwargs def index(*args, **kwargs): pass """ # 问题3引入:如果index形参是*args 列表里面有很多元素 如何实现按照位置一一传入 def index1(*args): print(args) new_list1 = [11,22,33,44,55] index1(*new_list1) # index1(11,22,33,44,55) ''' *号在实参中会将变量名所对应的列表、元组打散,再yiyi传入函数中 '''
其他类型参数
命名关键字参数 def register(name,age,*,sex,height): pass register('alan',18,'male',188) # ERROR register('alan',18,sex='male',height='1.88m') # 正常运行 """ sex height在传入实参的时候必须以关键字参数的形式 ps:该类型的参数几乎不用 也几乎很少能碰到 """
名称空间
1.名称空间分类
- 内置名称空间
- 全局名称空间
在PY文件中顶格编写的代码运行之后就会存放在全局空间,但也不绝对,什么if、for都能造例外
- 局部名称空间
函数体代码在运行之后产生的都是存放在局部名称空间
2.名称空间存活周期
- 内置名称空间随python解释器启动与关闭而创建和销毁
- 全局名称空间随py文件的运行与结束而创建和销毁
- 局部名称空间随函数体代码的执行与结束而创建和销毁
3.名字的查找顺序
# 在查找名字的时候 要先确定自己当前在哪 1.如果你在局部 局部 >>> 全局 >>> 内置 2.如果你在全局 全局 >>> 内置
这篇关于函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-02Java管理系统项目实战入门教程
- 2024-11-02Java监控系统项目实战教程
- 2024-11-02Java就业项目项目实战:从入门到初级工程师的必备技能
- 2024-11-02Java全端项目实战入门教程
- 2024-11-02Java全栈项目实战:从入门到初级应用
- 2024-11-02Java日志系统项目实战:初学者完全指南
- 2024-11-02Java微服务系统项目实战入门教程
- 2024-11-02Java微服务项目实战:新手入门指南
- 2024-11-02Java项目实战:新手入门教程
- 2024-11-02Java小程序项目实战:从入门到简单应用