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 架构,这有望实现: 快速充电 – 在相同…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...