python开发基础——day9 函数基础与函数参数
一、初识函数(function)
编程函数!=数学函数,里面的是逻辑,功能,而不是套公式
编程函数的作用实现特定操作的一段代码
你现在请客,每个人都点同样的一份吃的,请100个人
1.薯条
2.上校鸡块
3.可乐
那这个时候会用到什么?套餐
出个套餐 美味套餐(薯条,可乐,上校鸡块)
程序把一些会经常用到的代码保存起来,取个有意义的名字,以后要用直接调用就OK
变量:保存一个/多个数据
函数:保存的是一段或者多段代码
函数的优点:
1.遇到重复代码时,可以定义为函数,省事
2.修改起来比较方便
本质就是写好的一些代码 可以实现特定的功能 取个好记的名字保存起来 方便后续使用
二、函数基础
函数的命名规则和变量是一样的
1.由数字,字母,下划线组成
2.不能数字开头,不能纯数字,不能有其他的特殊符号
3.区分大小写
4.不能用关键字/内置函数
5.见名知意
函数如果没有特别作用,没想好名字,可以取名fun
函数的使用分为两步:
1.定义函数
2.调用函数
2.1定义函数&调用函数
1.定义函数
def 函数名():
代码内容
def fun():
print('好好学习')
调用函数:在函数名后面加个括号,就是调用函数
函数名()
fun()
实例:
def fun():
print('好好学习')
fun()
2.声明空函数,还没有想好内容,就先写个pass
def 函数名():
pass
def fun2():
pass
三、函数参数
def fun():
print(77+66)
函数里的数据如果是一成不变的,那很鸡肋,函数会接触到各种各样的数据,函数可以根据情况来接收一些数据,并在函数里处理
让函数里的内容可以更加灵活,数据不是定死的-->函数参数
形参-->没有具体的数据,只是先占位置-->定义阶段
实参-->有具体的数据,在运行时取代形参-->调用阶段
声明带参函数:
def 函数名(形参名):
代码内容
def fun(money):
print(f'我最喜欢{money}了')
调用带参函数
函数名(实参)
fun(50)
fun(100)
fun('一百万')
一个萝卜一个坑,不要多,也不要少,你定义了几个形参,就传几个实参,否则会报错
3.1必备参数
有几个形参,就传几个实参,数量要一致
定义时:
def 函数名(形参1,形参2):
代码内容
调用时:
函数名(实参1,实参2)
def add1(num1,num2):
print(num1+num2)
add1(70,20) #少写多写都会报错
3.2默认参数
在声明参数的时候就提前赋好值,作为一个默认的参数
定义时:
def 函数名(形参1,形参2=值):
代码内容
调用时:
函数名(实参1)
def fun(money,people='伊尔'):
print(f'{people}最喜欢{money}了')
fun(100)
fun(50)
fun(50,'张三') #不会报错,但是张三会覆盖原来的值伊尔
注意:赋值的默认参数要写在最后面,不能放在前面
3.3不定长参数(1)
有的时候可能出现不清楚这个函数会接收多少个参数,这时候就用不定长参数1
不定长参数1可以一次性接受多个数据,接收到的数据为元组类型
不定参数的表现形式为:*
参数名是不固定的,但是正常规范命名都是取名*args
定义时:
def 函数名(*agrs):
代码内容
调用时:
函数名(实参1,实参2,实参3,...)
def room(*args):
print(args)
print(type(args)) #<class 'tuple'>
print(args[0])
room('张三',17,19,10.6,'王五')
def message(name,age,*args):
print(name) #伊尔
print(age) #18
print(args) #('张三', 17, 19, 10.6, '王五', '李四')
print(args[2:5]) #(19, 10.6, '王五')
message('伊尔',18,'张三',17,19,10.6,'王五','李四')
3.4不定长参数(2)
可以一次性接受多个数据,接收的数据类型为键值对,得到的数据为字典类型
不定长参数2的表现形式为:**
参数名同样不固定,但最好叫**kwargs
定义时:
def 函数名(**kwargs):
代码内容
调用时:
函数名(键=值,键=值,键=值,...) #键名不用加引号
def fun2(**kwargs):
print(kwargs)
print(type(kwargs)) #<class 'dict'>
fun2(name='伊尔',age=18)
def grade(c,m,**kwargs):
print(c)
print(m)
print(kwargs)
grade(98,99,name='伊尔',age=18)
def fun3(a,b,*args,**kwargs):
print(a*b) #50
print(args) #(15, 20, 7.6)
print(kwargs) #{'name': '伊尔', 'java': 100}
fun3(5,10,15,20,7.6,name='伊尔',java=100)
注意:不定长参数1要在不定长参数2前面
四、返回值(return)
如果函数内只是单纯的写print,代表着这个函数没有定义返回值,如果一个函数没有定义返回值的话,函数的返回值默认为空
def add1(num1,num2):
print(num1+num2) #这个函数没有定义返回值
add1(70,520)
a=add1(70,520)
print(a) #函数没有定义返回值的话就为None
# print(type(a))
# print(a+10)
如果在函数里,一个数据如果是print出来,那就是只能看,不能用
如果想要使用这个数据,需要的是return返回,而不是print输出
return 返回值
把值返回给函数,可以用来使用,返回值一般是结合函数参数来使用
1.定义一个带有返回值的函数
def 函数名():
return 返回值数据
2.输出返回值内容:把函数名() 用print包裹起来 这个动作就会达到两个目的
1.调用函数
2.输出函数的返回值
例:
def fun(a,b):
return a+b
fun(6, 10) #直接调用函数,不会输出返回值
print(fun(6, 10)) #所以要打印返回值需要print包裹起来
返回值可以有多个,并且也可以输出多个返回值
细节:
1.返回值的类型是不限的,int/float/list/dict...都可以,也可以返回一个函数
2.返回值的数量是不限的,可以返回多个数据,返回多个数据得到的数据类型为元组类型
def 函数名():
return 返回值1,返回值2
def fun3():
return '好好学习',1,8.0,(1,2),[1,2]
res2=fun3()
print(type(res2)) #<class 'tuple'>
print(fun3())
得到的返回值还有一种用法是可以把函数返回值赋值给变量
变量名=函数名() #把函数返回值赋值给变量
def fun4(a,b):
return a*b
res=fun4(3,5) #把函数fun4的返回值赋值给变量res
print(res) #15
print(res+10) #返回值可以拿来用 所以可以+10
注意:
在return后面的代码是不会执行的,因为函数执行到return就会结束
def talk():
print('好好学习')
return '天天向上'
print('hhhhh')
# talk() #好好学习
print(talk()) #先调用函数打印好好学习,其次打印返回值向上
print(talk) #打印函数名 显示出的是内存地址
五、内置函数(基础篇)
python自带的一些功能函数
序列类型/散列类型/数据类型转换方法
特点:
1.都有一个小括号
2.每个函数都有自己的功能
print() : 输出语句
input(): 输入语句
type() : 获取数据类型
len(): 获取数据长度(里面有多少个元素)
min(): 获取最小值
max(): 获取最大值
sum(): 获取数据的和
demo=' 好好学习'
print(max(li))
print(min(li))
print(sum(li))
print(len(li))
print(len(demo))
六、文档字符串
基于函数写的注释,看起来和注释差不多,但是可以被调用,在学函数时,更推荐使用文档字符串,里面可以写
1.这个函数是干嘛用的
2.这个函数参数都是干嘛用的
3.返回值是干嘛用的
输出文档字符串:
函数名.__doc__
def fun5(a,b):
'''
我是做加法运算
:param a: float型
:param b: float型
:return:a+b的结果
'''
return a+b
print(fun5.__doc__)
print(print.__doc__)
七、练习
1.定义一个函数,内容为输出一句('人生苦短,我选python'),并调用该函数
2.定义一个函数,该函数在调用的时候会接收2个数值数据,返回值为返回里面较大的值,并调用输出
3.定义一个函数,该函数在调用的时候会接收一个元组数据,元组里的值都为数值,返回值为该参数的'长度'以及'元组里数值的和',并调用输出
4.定义一个函数,该函数在调用的时候会接收一个字符串数据为你的名字,在声明的时候有个默认参数值为'多喝热水',函数功能为输出一句 '<你的名字>要<好好学习>' ,并调用输出
5.通过函数实现一个计算器(加减乘除)
小提醒:把加减乘除分别写成4个函数,让用户选择对应功能,数值也同样由用户输入(计算两个值之间的加减乘除的操作)
相关文章:
python开发基础——day9 函数基础与函数参数
一、初识函数(function) 编程函数!数学函数,里面的是逻辑,功能,而不是套公式 编程函数的作用实现特定操作的一段代码 你现在请客,每个人都点同样的一份吃的,请100个人 1.薯条 2.上校鸡块 3.可乐 那…...

STM32——使用TIM输出比较产生PWM波形控制舵机转角
一、输出比较简介: 只有高级定时器和通用寄存器才有输入捕获/输出比较电路,他们有四个CCR(捕获/比较寄存器),共用一个CNT(计数器),而输出比较功能是用来输出PWM波形的。 红圈部分…...
第十五章 集合(set)(Python)
文章目录 前言一、集合 前言 集合(set)是一个无序的不重复元素序列。 一、集合 set {1, 2, 3, 4}...

面试-javaIO机制
1.BIO BIO:是传统的javaIO以及部分java.net下部分接口和类。例如,socket,http等,因为网络通信同样是IO行为。传统IO基于字节流和字符流进行操作。提供了我们最熟悉的IO功能,譬如基于字节流的InputStream 和OutputStream.基于字符流…...
在.NET Core中,config和ConfigureServices的区别和作用
在.NET Core中,config和ConfigureServices是两个不同的概念,它们在应用程序的启动和配置过程中扮演着不同的角色。 ConfigureServices:这是ASP.NET Core应用程序中的一个方法,位于Startup类的内部。它的作用是配置依赖注入(DI)容器…...
App Inventor 2 如何实现多个定时功能?
1、可以使用多个“计时器”组件。 2、也可以用一个计时器,定时一分钟。也就是一分钟就会触发一次事件执行,定义一个全局数字变量,在事件中递增,用逻辑判断这个变量的值即可完成多个想要定时的任务(о∀о) 代码块请参考…...

技术驱动的音乐变革:AI带来的产业重塑
📑引言 近一个月来,随着几款音乐大模型的轮番上线,AI在音乐产业的角色迅速扩大。这些模型不仅将音乐创作的门槛降至前所未有的低点,还引发了一场关于AI是否会彻底颠覆音乐行业的激烈讨论。从初期的兴奋到现在的理性审视࿰…...

重生之我要学后端0--HTTP协议和RESTful APIs
http和RESTful APIs HTTP协议RESTful APIs设计RESTful API设计实例 HTTP协议 HTTP(超文本传输协议)是用于分布式、协作式和超媒体信息系统的应用层协议。它是网页数据通讯的基础。工作原理简述如下: 客户端请求(Request…...

深度之眼(二十八)——神经网络基础知识(三)-卷积神经网络
文章目录 一、前言二、卷积操作2.1 填充(padding)2.2 步长2.3 输出特征图尺寸计算2.4 多通道卷积 三、池化操作四、Lenet-5及CNN结构进化史4.1 Lenet-5 一、前言 卷积神经网络–AlexNet(最牛)-2012 Lenet-5-大规模商用(1989) 二、…...
AI Infra简单记录
向量数据库的作用 1. 在AI大模型训练过程中,向量数据库可以有效提升数据检索、特征提取等任务的效率。 2、在AI大模型推理过程中,向量数据库为大模型提供外挂知识库,提升模型时效性与准确性,提供缓存能力,减少调用开…...

三英战吕布 | 第5集 | 温酒斩华雄 | 竖子不足与谋 | 三国演义 | 逐鹿群雄
🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 📌这篇博客分享的是《三国演义》文学剧本第Ⅰ部分《群雄逐鹿》的第5️⃣集《三英战吕布》的经典语句和文学剧本全集台词 文章目录 1.经典语句2.文学剧本台…...

【C语言】自定义类型:结构体
目录 1. 结构体类型的声明 1.1. 结构的一般声明 1.2. 结构的特殊声明 2. 结构体变量的创建和初始化 3. 结构体的自引用 4. 结构体内存对齐 4.1. 对其规则(面试考点) 4.2. 为什么存在内存对齐? 4.2.1. 平台原因(移植…...

算法金 | 决策树、随机森林、bagging、boosting、Adaboost、GBDT、XGBoost 算法大全
大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 决策树是一种简单直观的机器学习算法,它广泛应用于分类和回归问题中。它的核心思想是将复杂的决策过程分解成一系列简单的决…...

[每周一更]-(第103期):GIT初始化子模块
文章目录 初始化和更新所有子模块分步骤操作1. 克隆包含子模块的仓库2. 初始化子模块3. 更新子模块 查看子模块状态提交子模块的更改处理子模块路径错误的问题 该问题的缘由是因为:在写某些代码的时候,仓库中有些文件夹,只提交了文件夹名称到…...
单例模式---线程安全实现
文章目录 1.单例模式的特点😊2.单例模式两种实现🤣🤗😊2.1 饿汉式2.2 懒汉式 3.传统单例模式的线程安全问题4.解决方法4.1静态局部变量4.2加锁4.3双重检查锁(DCL)4.4pthread_once 1.单例模式的特点…...
Agent技术在现代软件开发与应用中的探索
一、引言 随着计算机科学的快速发展,Agent技术作为人工智能和分布式计算领域的重要分支,已经渗透到软件开发的各个方面。Agent技术通过赋予软件实体自主性和交互性,使得软件系统能够更加智能、灵活地响应环境变化和用户需求。本文将对Agent技…...

c语言中extern定义和引用其他文件的变量,(sublime text)单独一个文件编译不会成功
关键字extern的作用 这个很常见的都知道是定义一个外部变量或函数,但并不是简单的建立两个文件,然后在用extern 定义在另一个非最初定义变量的文件里 区分文件和编译运行的文件 例如,一个文件夹里有文件a.c和文件b.c,在sublime text中直接…...

时序数据中的孤立野点、异常值识别及处理方法
目录 参考资料 对时序数据做差分; 参考资料 [1] 离群点(孤立点、异常值)检测方法 2017.6;...

JetBrains PyCharm 2024 mac/win版编程艺术,智慧新篇
JetBrains PyCharm 2024是一款功能强大的Python集成开发环境(IDE),专为提升开发者的编程效率和体验而设计。这款IDE不仅继承了前代版本的优秀特性,还在多个方面进行了创新和改进,为Python开发者带来了全新的工作体验。 JetBrains PyCharm 20…...

MCU解决800V电动汽车牵引逆变器的常见设计挑战的3种方式
电动汽车 (EV) 牵引逆变器是电动汽车的。它将高压电池的直流电转换为多相(通常为三相)交流电以驱动牵引电机,并控制制动产生的能量再生。电动汽车电子产品正在从 400V 转向 800V 架构,这有望实现: 快速充电 – 在相同…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...

【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
comfyui 工作流中 图生视频 如何增加视频的长度到5秒
comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...