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.rhkb.cn/news/126391.html

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

相关文章

LeetCode141:环形链表

给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;…

数学建模:回归分析

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 数学建模&#xff1a;回归分析 文章目录 数学建模&#xff1a;回归分析回归分析多元线性回归案例 多项式回归一元多项式回归多元二项式回归 非线性回归逐步回归 回归分析 多元线性回归 案例 首先进行回归分…

无涯教程-Flutter - Dart简介

Dart是一种开源通用编程语言&#xff0c;它最初是由Google开发的&#xff0c; Dart是一种具有C样式语法的面向对象的语言&#xff0c;它支持诸如接口&#xff0c;类之类的编程概念&#xff0c;与其他编程语言不同&#xff0c;Dart不支持数组&#xff0c; Dart集合可用于复制数据…

【Github】git本地仓库建立与远程连接

文章目录 前言一、git简介二、git下载2.1下载地址 三、git安装3.1安装3.2 配置3.3 config设置&#xff08;增删改查&#xff09; 四.github与git连接——本地Git仓库4.1 建本地的版本库4.2 源代码放入本地仓库4.3提交仓库 五、github与git的连接——远程连接5.1 创建SSH Key5.2…

网络地址转换技术NAT(第九课)

一 什么是NAT? NAT是网络地址转换的缩写,是一种在计算机网络中使用的技术,可以将私有地址转换为公共地址,从而实现本地网络与公共网络的互联。NAT工作在网络层,可以隐藏内部网络中的IP地址和端口号,从而增强网络的安全性和灵活性。在家庭网络、企业网络、公共WIFI热点等…

虹科方案|HK-Edgility利用边缘计算和VNF降本增效

一、边缘计算和 VNF 在当今瞬息万变的数字环境中&#xff0c;边缘虚拟化网络功能&#xff08;VNF&#xff09;是一个既能够优化网络基础设施&#xff0c;又能控制成本的创新型解决方案。它使客户能够将多个基于软件的 VNF 整合到一个专用计算设备上。更值得高兴的是&#xff0c…

模型压缩-对模型结构进行优化

模型压缩-对模型结构进行优化 概述 模型压缩通常都是对推断过程而言&#xff0c;训练过程的计算代价通常不考虑&#xff0c;因为GPU可以快速完成任意复杂度模型的训练对于推断过程来说&#xff0c;模型应用才是对于速度敏感的场景多数情况下 希望使用尽可能少的能耗完成京可能…

SpringBoot——整合Mongodb

简单介绍 Mongdb是一个开源&#xff0c;高性能&#xff0c;无模式的文档型数据库&#xff0c;NoSQL数据库产品中的一种&#xff0c;是最像关系型数据库的非关系型数据库。 使用场景 用户数据 存储位置&#xff1a;数据库特征&#xff1a;永久性存储&#xff0c;修改频率极低游…

蠕虫病毒流量分析案例

背景 某供排水集团的网络管理员对其网络的健康状况持认可态度&#xff0c;表示网络运行正常&#xff0c;没有发现异常行为。然而&#xff0c;由于网络环境变得越来越复杂&#xff0c;仅凭借传统的网络经验已经不能全面了解网络情况。因此&#xff0c;我们为供排水集团安装了Ne…

【实训】“宅急送”订餐管理系统(程序设计综合能力实训)

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 前言 大一小学期&#xff0c;我迎来了人生中的第一次实训…

LNMP架构搭建论坛

目录 一、LNMP简介&#xff1a; 二、LNMP搭建&#xff1a; 1.前提准备&#xff1a; 关闭防火墙和安全机制&#xff1a; 2.编译安装nginx&#xff1a; 3.编译安装mysql&#xff1a; 3.1 安装依赖环境&#xff1a; 3.2 创建mysql运行用户&#xff1a; 3.3 编译安装&#xff1a…

神经网络与强化学习:揭示AI的超能力

文章目录 神经网络&#xff1a;模拟人脑的工具强化学习&#xff1a;通过试错学习结合神经网络和强化学习价值网络策略网络结合训练 应用领域游戏机器人控制金融交易 未来趋势自动化和自主系统个性化和自适应系统跨学科研究 结论 &#x1f389;欢迎来到AIGC人工智能专栏~神经网络…

msvcp110.dll是什么意思与msvcp110.dll丢失的解决方法

电脑突然提示msvcp110.dll丢失&#xff0c;无法执行此代码。导致软件无法打开运行&#xff0c;这个怎么办呢&#xff1f;我在网上找了一天的资料&#xff0c;终于把这个问题彻底处理好&#xff0c;也弄清楚了msvcp110.dll丢失的原因及msvcp110.dll丢失修复方法&#xff1f;现在…

LDAP服务器如何重启

1、find / -name ldap 该命令只会从根路径下查看ldap文件夹 find / -name ldap2、该命令会从根路径/查看所有包含ldap路径的文件夹&#xff0c;会查询出所有&#xff0c;相当于全局查询 find / -name *ldap*2、启动OpenLADP 找到LDAP安装目录后&#xff0c;执行以下命令 #直…

pytorch搭建squeezenet网络的整套工程,及其转tensorrt进行cuda加速

本来&#xff0c;前辈们用caffe搭建了一个squeezenet的工程&#xff0c;用起来也还行&#xff0c;但考虑到caffe的停更后续转trt应用在工程上时可能会有版本的问题所以搭建了一个pytorch版本的。 以下的环境搭建不再细说&#xff0c;主要就是pyorch&#xff0c;其余的需要什么p…

ABAP BAPI_ACC_DOCUMENT_POST 中 EXTENSION1的用法

BAPI_ACC_DOCUMENT_POST 在过账会计凭证时候&#xff0c;经常会发现一些标准字段在参数中并没有 可以通过CMOD/SMOD增强出口--》ACBAPI01--》EXIT_SAPLACC4_001--》ZXACCU15 示例代码&#xff1a; DATA: wa_extension TYPE bapiextc,it_extension TYPE STANDARD TABLE OF ba…

OpenCV(二十一):椒盐噪声和高斯噪声的产生

目录 1.图像噪声介绍 2.椒盐噪声的产生 3.高斯噪声的产生 1.图像噪声介绍 噪声介绍 图像噪声是指在图像中存在的不期望的、随机的像素值变化&#xff0c;这些变化来源于多种因素。噪声可能导致图像细节模糊、失真或难以分辨。 以下是几种常见的图像噪声类型&#xff1a; 1…

javascritp如何判断是从刷新(重新加载)、正常打开(或链接打开)、还是从浏览器回退进入页面的

重点先下另外一个知识点&#xff1a; 当我们的Web站点采用主体页面的iframe导航各个子页面&#xff08;浏览器地址保持不变&#xff09;的情况&#xff0c;如果我们希望每次iframe中打开的新的子页面&#xff0c;也都能够像在不采用iframe的情况那样&#xff0c;后续能够在浏览…

Tailwind 练手项目

Tailwind 练手项目 用到的技巧 Tailwind CSS 速成 应该都提过了&#xff0c;我不记得这里有什么特别新的知识 整体完成图大概这样&#xff1a; 一个纯静态页面&#xff0c;没有做 JS 之类的特效&#xff0c;不过做了移动端适配&#xff0c;说实话我写到一半的时候改了不少………

易云维®医院后勤管理系统软件利用物联网智能网关帮助实现医院设备实现智能化、信息化管理

近年来&#xff0c;我国医院逐渐意识到医院设备信息化管理的重要性&#xff0c;逐步建立医院后勤管理系统软件&#xff0c;以提高信息化管理水平。该系统是利用数据库技术&#xff0c;为医院的中央空调、洁净空调、电梯、锅炉、医疗设备等建立电子档案&#xff0c;把设备监控、…