Python函数的概念以及定义方式

一. 前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取

二. 什么是函数?

假设你现在是一个工人,如果你实现就准备好了工具,等你接收到任务的时候,

直接带上工具就可以工作了,而不是临时去制作。

在程序中,函数就是具备某一功能的工具,实现将工具准备好就是函数的定义,

遇到应用场景将工具拿来用,就是函数的调用。

三. 为什么要使用函数

如果不使用函数,写程序时会遇到这三个问题:

  • 程序冗长,组织结构不清晰,可读性差

  • 程序的扩展性差

  • 程序的可维护性差

四. 如何用函数

函数的使用遵循一个原则:先定义函数,然后调用它

定义函数

def 函数名(param1、param2……):"""函数功能的描述信息:param1:描述参数:param2:描述参数:return:返回值"""code 1code 2code 3...return 返回值

调用函数

函数名(param1、param2……)

1 登录注册功能的函数

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# 注册功能函数
def register():"""注册功能"""username = input('username: ').strip()pwd = input('password: ').strip()with open('user.txt', 'a', encoding='utf8') as fa:fa.write(f"{username}:{pwd}\n")fa.flush()
register()# 登录功能函数
def login():"""登录功能"""inp_username = input('username: ').strip()inp_pwd = input('password: ').strip()with open('user.txt', 'rt', encoding='utf8') as fr:for user_info in fr:user_info = user_info.strip('\n')user_info_list = user_info.split(':')if inp_username == user_info_list[0] and inp_pwd == user_info_list[1]:print('login successful')breakelse:print('failed')
login()

2 函数的定义阶段

def func():bar()  # 不属于语法错误,不会报错print('*'*10)

在函数的定义阶:

  • 申请内存空间保存函数体代码

  • 将函数体绑定给函数名

  • 定义阶段不会执行函数体代码,但是会检测函数体的语法

3 函数的调用阶段

def bar():print('from bar')def foo():print('from foo')bar()foo()
'''
from foo
from bar
'''
def foo():print('from foo')bar()def bar():print('from bar')foo()
'''rom foo
from bar
'''

函数调用阶段:

  1. 通过函数名找到函数的内存地址

  2. 然后加括号就是在出发函数体代码并执行

五. 定义函数的三种形式

1 无参函数

定义函数时参数是函数体接收外部传值的一种媒介,其实就是一个变量名

在函数定义阶段,括号内没有参数,称为无参函数。需要注意的是:定义的时候是无参函数,调用的时候也不用传入参数。

如果函数体代码逻辑不需要依赖外部传入的值,则必须定义成无参函数。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def func():print('hello lwx')func()# hello lwx

2 有参函数

在函数定义阶段,括号内有参数,称为有参函数。需要注意的是,定义时有参数,调用的时候也必须传入参数。

如果函数体代码逻辑需要依赖外部传入的值,那么必须定义成有参函数。

def  sum_self(x,y):res = x+yprint(res)sum_self(520,1314)# 1834

3 空函数

当你只知道你需要。实现的某个功能,但是不知道如何使用代码实现时,你可以暂时写一个空函数,也就是函数体没有代码,但是我们函数不可以没有函数题,所以就用pass代替,跳过这个函数,先去实现其他的功能。

def func():pass

4 三种定义方式应用场景

无参函数应用场景

用于无需外部传值的场景:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def add():x= float(input('num_x:'))y= float(input('num_y:'))res = x+yprint(res)
add()
add()# num_x:10
# num_y:10
# 20.0
# num_x:10
# num_y:20
# 30.0

有参函数应用场景

用于需要接收外部传入值的场景

def add(x,y):res = x+yprint(res)
add(10,20)
add(10,30)# 30
# 40

空函数应用场景

先进性构思,列出程序的骨架,然后补全

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def login():passdef shopping():passdef exit():pass

六. 调用函数

1 什么是函数调用

函数名()就是函数的调用,会执行函数体代码,直到遇到return或执行完函数体内所有代码才结束

函数运行完毕所有代码, 如果函数体不写return,则会返回Nore

函数名()就是函数的调用,会执行函数体代码,直到遇到return或执行完函数体内所有代码才结束

函数运行完毕所有代码, 如果函数体不写return,则会返回Nore

def a():passprint(a())# None

2 为什么用函数调用?

方便实用函数的功能,也可以当做参数使用4

3 函数调用的三种形式

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def max_self(x,y):if x > y:return xelse:return y
#第一种
max_self(1,2)
#第二种
res = max_self(1,2)*12
#第三种
max_self(max_self(20000,30000),40000)

七. 函数的返回值

return是函数结束的标志,即函数体一旦遇到return会立刻终止函数的运行并且会将return后面的值当做本次运行的结果返回

1 返回值为none:函数体没有返回值

def func():return#return none

2 返回一个值:return 值

def func():return  0

3 返回多个值

用逗号隔开多个值,会被return返回为元组的形式

def func():return 10,'a',[1,2,3]
res = func()
print(res,type(res))
# (10, 'a', [1, 2, 3]) <class 'tuple'>

尾语

最后感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/104067.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring初始化项目

1、官网用法 访问地址&#xff1a;https://start.spring.io idea配置&#xff1a;https://start.spring.io 2、阿里巴巴加速 访问地址&#xff1a;https://start.aliyun.com/bootstrap.html idea配置&#xff1a;https://start.aliyun.com 3、区别 官网阿里巴巴版本最新稍…

2023区块链应用操作员认证(4级)报名来弘博创新

区块链应用操作员&#xff0c;是指运用区块链技术及工具&#xff0c;从事政务、金融、医疗、教育、养老等场景系统应用操作的人员。 腾讯作为广东省第一批公布的社会培训评价组织&#xff0c;可开展职业技能等级认定职业(工种)区块链应用操作员(4-3-2-1级)。 证书含金量 证书是…

Redis 集群

1. 是什么 1.1 定义 由于数据量过大&#xff0c;单个Master复制集难以承担&#xff0c;因此需要对多个复制集进行集群&#xff0c;形成水平扩展每个复制集只负责存储整个数据集 的一部分&#xff0c;这就是Redis的集群&#xff0c;其作用是提供在多个Redis节点间共享数据的程序…

如何为虚拟机添加磁盘,扩充原有分区的磁盘空间

如何为虚拟机添加磁盘&#xff0c;扩充原有分区的磁盘空间 关机新增磁盘 虚拟机关机的状态下&#xff0c;在 VMware 当中新增一块磁盘&#xff0c;选中左边要添加磁盘的虚拟机镜像&#xff0c;然后鼠标右键点击设置。 选中磁盘点击添加 点击下一步&#xff0c;悬着SCSI这个…

【C++基础】7. 控制语句

文章目录 【 1. 循环 】1.1 循环类型1.2 循环控制语句break 语句continue 语句goto 语句 1.3 无限循环 【 2. 选择 】switch 语句&#xff1f;&#xff1a;语句 【 1. 循环 】 1.1 循环类型 循环类型描述while 循环当给定条件为真时&#xff0c;重复语句或语句组。它会在执行…

人体呼吸存在传感器成品,毫米波雷达探测感知技术,引领智能家居新潮流

随着科技的不断进步和人们生活质量的提高&#xff0c;智能化家居逐渐成为一种时尚和生活方式。 人体存在传感器作为智能家居中的重要组成部分&#xff0c;能够实时监测环境中人体是否存在&#xff0c;为智能家居系统提供更加精准的控制和联动。 在这个充满创新的时代&#xf…

软件测试中的43个功能测试点总结

功能测试就是对产品的各功能进行验证&#xff0c;根据功能测试用例&#xff0c;逐项测试&#xff0c;检查产品是否达到用户要求的功能。针对web系统的常用测试方法如下&#xff1a; 1、页面链接检查&#xff1a; 每一个链接是否都有对应的页面&#xff0c;并且页面之间切换正…

EagleSDR USB HAT FT600

给EagleSDR做了个USB 3.0的子卡&#xff0c;采用FT600方案&#xff0c;实物如下&#xff1a; 用FT600DataStreamerDemoApp测试&#xff0c;速度如下&#xff1a; 由于FT600是16bit的接口&#xff0c;如果用FT601的32bit接口&#xff0c;性能应该还会有大幅提升。 测试代码很简…

LeetCode 297. Serialize and Deserialize Binary Tree【树,DFS,BFS,设计,二叉树,字符串】困难

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

使用动态住宅代理还能带来哪些好处?

一、什么是动态住宅代理ip 动态住宅代理是一种代理技术&#xff0c;它利用代理服务器中转用户和目标服务器之间的网络流量&#xff0c;实现用户真实位置的屏蔽。代理提供商会有自己的ip大池子&#xff0c;当你通过代理服务器向网站发送请求时&#xff0c;服务器会从池子中选中…

JVM快速入门篇

一、JVM探究 1.1前言 请你谈谈你对jvm的理解&#xff1f;Java8虚拟机和之前的变化更新&#xff1f;什么是OOM&#xff1f;什么是栈溢出StackOverFlowError&#xff1f;怎么分析&#xff1f;jvm的常见调优参数有哪些&#xff1f;内存快照如何抓取&#xff1f;怎么分析Dump文件&…