phpnow 新建网站/时空seo助手
知识点
函数的定义与调用
- 函数分类:内置函数和自定义函数。
- 函数定义:使用
def
关键字定义函数,包括函数名、参数列表和函数体。 - 注意:
- (1)即使该函数不需要接收任何参数,也必须保留一对空的圆括号。
- (2)python的参数不需要声明数据类型
- (3)括号后面的冒号不能省略。
- (4)函数体相对于def关键字必须保持一定的空格缩进。
- (5)return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。强调了即使函数不需要参数,也必须保留空括号,参数不需要声明数据类型,函数体需要适当的缩进,以及
return
语句的使用。
- 无参函数与有参函数:无参数
和有参数
的函数。
- 空函数:使用
pass
关键字定义空函数的情况。
- 函数调用:如何调用函数,包括无参数和有参数的情况。
- 如果调用的是无参数函数,则实参列表省略。 通常将函数定义和函数调用都放在一个程序文件中,然后运行程序文件。
- 嵌套调用
递归函数
- 递归定义:指一个函数的函数体中又直接或间接地调用该函数本身的函数。
- 递归出口与递归体:如何设置递归的终止条件(出口)和递归的计算过程(体)。
- 实例:提供了计算阶乘和求和的递归函数示例。
函数参数的传递
- 参数传递:Python中参数传递的机制,区分了不可变对象和可变对象的传递方式。在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。当参数类型为固定数据类型(如整数、浮点数、字符串、元组等)时,类似 C++ 的值传递,在函数内部直接修改形参的值不会影响实参。当参数类型为可变数据类型(如列表、字典、集合等)时,类似 C++ 的引用传递。在函数内部使用下标或其他方式为其增加、删除元素或修改元素值时,修改后的结果是可以反映到函数之外的,即实参也会得到相应的修改。
- 不可变参数类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变 a 的值,相当于新生成了 a。展示了在函数内部修改不可变类型参数不会影响外部变量。
- 可变参数类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。展示了可变类型参数在函数内部的修改会影响到外部变量。
参数的类型
- 位置参数:调用函数时实参和形参的顺序和数量必须一致。
- 关键字参数:如何使用关键字参数来指定实参对应的形参,允许参数的顺序不固定。
- 关键字参数的形式为: 形参名=实参值
- 通过形式参数的名称来指示为哪个形参传递什么值,这可以跳过某些参数或脱离参数的顺序。(实参名来自形参的名字)
- 默认值参数:展示了如何为函数参数设置默认值,以及相关的规则。
- 默认值参数的形式为: 形参名=默认值
- 注意: (1)默认值参数必须出现在形参表的最右端。也就是说,第一个形参使用默认值参数后,它后面的所有形参也必须使用默认值参数,否则会出错。 (2)所有的位置参数必须在默认参数前,包括函数定义和调用
- 可变长度参数(形参):使用
*
和**
来接受不定数量的参数,分别将它们存储在元组和字典中。可变长度参数永远放在参数的最后面。- 在形参名前面加*,用来接受任意多个实参并将其放在一个元组中。
- 元组可变长度形参
- 在形参名前面加**,可以接受任意多个 关键字=实参值 形式的实参。关键字参数和实参值参数被放入一个字典,分别作为字典的关键字和字典的值
- 字典可变长度形参
- 参数的解包裹传递:如何使用
*
和**
来解包裹元组和字典,将它们作为参数传递给函数。包裹和解包裹并不是相反操作,是两个相对独立的过程。- 调用函数时,若函数接收的实参为元组或字典类型,可以对函数参数进行解包裹:
- 使用* 可以解压待传递到函数中的元组、列表、字符串等类型,并按位置传递到函数入口参数中
- 使用**可以解压待传递到函数的字典,并按关键字传递到函数入口参数中
代码部分
- 实验目的:
- 熟练python编辑器pycharm的使用。
- 掌握python的函数的定义
- 掌握python的函数结构,参数位的设计,如何灵活使用不定长参数
- 理解python参数传递的过程
- 熟练并理解使用函数优化编程结构以及思路
二、实验环境
本次实验需使用实验室提供的Windows主机环境+pycharm
三、实验内容
说明:基础题为必做题,提高题为选做题
- (基础题)对于一个十进制的正整数, 定义函数f(n)为其各位数字的平方和,如:
f(13) : 10
f(207) : 53
代码:
def f(n):return sum(int(digit)**2 for digit in str(n))# 测试代码
print(f(13)) # 输出: 10
print(f(207)) # 输出: 53
- (基础题)编写一个函数, 接收字符串参数, 返回一个元组,元组的第一个值为大写字母的个数, 第二个值为小写字母个数,‘hello WROLD’,返回:(5,5)
代码:
def count_letters(s):upper_count = sum(1 for char in s if char.isupper())lower_count = sum(1 for char in s if char.islower())return (upper_count, lower_count)# 测试代码
print(count_letters('helloWROLD')) # 输出: (5, 5)
提示:已知有字符串ls
ls.isupper() #判断是否为大写字母,若是,返回True
ls.islower() #判断是否为小写字母,若是,返回True
- (基础题) 定义一个函数,能够获取任意多个数(1-100以内)中的最大值
代码:
def max_value(*args):return max(args)# 测试代码
print(max_value(10, 20, 30, 40)) # 输出: 40
- (提高题)编写一个函数calcuate_ave, 可以接收任意多个数,返回的是一个元组.元组的第一个值为所有参数的平均值, 第二个值是大于平均值的所有数
例如:calcuate_ave(10,13,14,15) 返回(13,[14,15])
calcuate_ave(10,11,14,15,12) 返回(12.4,[14,15])
代码:
def calculate_ave(*args):total = sum(args)average = total / len(args)above_average = [num for num in args if num > average]return (average, above_average)# 测试代码
print(calculate_ave(10, 13, 14, 15)) # 输出: (12.75, [13, 14, 15])
print(calculate_ave(10, 11, 14, 15, 12)) # 输出: (12.4, [14, 15])
总结
本节深入探讨了函数的基础知识,包括其定义、如何进行调用、不同参数传递机制以及装饰器的概念和使用,同时解释了变量的作用域。在Python编程语言中,函数不仅仅是数学概念中的函数映射,它更是一种执行特定运算或处理数据的程序单元。通过将代码封装进函数中,可以在程序的多个地方重复利用这段代码,而无需每次都重新编写,这正是函数带来的便利和效率。
相关文章:

python--实验7 函数(1)
知识点 函数的定义与调用 函数分类:内置函数和自定义函数。函数定义:使用def关键字定义函数,包括函数名、参数列表和函数体。注意: (1)即使该函数不需要接收任何参数,也必须保留一对空的圆括号…...

【力扣】数组中的第K个最大元素
一、题目描述 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入: [3,2,1,5,…...

WTM的项目中EFCore如何适配人大金仓数据库
一、WTM是什么 WalkingTec.Mvvm框架(简称WTM)最早开发与2013年,基于Asp.net MVC3 和 最早的Entity Framework, 当初主要是为了解决公司内部开发效率低,代码风格不统一的问题。2017年9月,将代码移植到了.Net Core上&…...

互联网3.0时代的变革者:华贝甄选大模型创新之道
在当今竞争激烈的商业世界中,华贝甄选犹如一颗璀璨的明星,闪耀着独特的光芒。 华贝甄选始终将技术创新与研发视为发展的核心驱动力。拥有先进的研发团队和一流设施,积极探索人工智能、大数据、区块链等前沿技术,为用户提供高性能…...

Tomcat的安全配置
1、生产环境优化 2、部分漏洞修复 转载自风险评估:Tomcat的安全配置,Tomcat安全基线检查加固-CSDN博客...

[笔记] 卷积 - 01 变速箱需要放置多少个加速度传感器?
1.讨论范围 本帖主要对卷积运算的过程和物理意义进行基本的展开,不涉及具体的验算过程。 最终所要达成的目标是,能够自然地判断某种物理现象或者某个测量目标是否与卷积运算有关,以及如何进行测量,搜集数据,调用三方…...

Maya崩溃闪退常见原因及解决方案
Autodesk Maya 是一款功能强大的 3D 计算机图形程序,被电影、游戏和建筑等各个领域的设计师广泛使用。然而,Maya 就像任何其他软件一样可能会发生崩溃问题。在前文中,小编给大家介绍了3ds Max使用V-Ray渲染时的崩溃闪退解决方案: …...

编码与梦想:我的CSDN创作5周年
五年前的今天,我带着对技术的热爱和对知识的渴望,踏上了CSDN的创作之旅。这个平台对于我来说,不仅仅是一个分享和学习的场所,更是我成长和自我实现的见证。 机缘 记得那时,我正为了一个编程难题而苦恼,偶…...

Vue2 基础十Vuex
代码下载 Vuex 概述 组件之间共享数据的方式: 父组件向子组件传值,是以属性的形式绑定值到子组件(v-bind),然后子组件用属性props接收。子组件向父组件传值,子组件用 $emit() 自定义事件,父组…...

【大模型】驾驭未知领域:LLM如何处理域外或无意义的提示
驾驭未知领域:LLM如何处理域外或无意义的提示 引言一、概念解析1.1 域外提示1.2 无意义提示二、LLM处理策略2.1 上下文推断2.2 缺省回答2.3 模糊处理2.4 求助于常识三、实例对比3.1 域外提示实例3.2 无意义提示实例四、挑战与局限五、未来展望六、结语附录:术语解释与参考资料…...

Docker容器 为MySQL创建新用户和授权
当您需要为 MySQL 数据库创建一个新用户并配置其访问权限时,可以按照以下步骤操作。我将创建一个名为 newuser 的新用户,并为其授予在任何主机上访问所有数据库的权限。 创建新用户和授权步骤: 登录到 MySQL 服务器 首先,使用具有…...

openssh9.8p1更新 修复漏洞(CVE-2024-6387)
2024 年 7 月,互联网公开披露了一个 OpenSSH 的远程代码执行漏洞(CVE-2024-6387)。鉴于该漏洞虽然利用较为困难但危害较大,建议所有使用受影响的企业尽快修复该漏洞。 centos7 为例 yum -y install gcc make openssl-devel zlib…...
超市收银系统源码
今天给大家分享一套线上线下打通的收银系统,安卓/win双端线下收银台,可DIY、多模板的三端线上小程序商城,除此之外ERP进销存管理、商品管理、会员营销都很完善。 重点是系统支持OEM贴牌独立部署和全开源源码,非常适合一些正在寻找…...

word 使用手册
word 文档中如何将下行的指定文字退格到上行中 就像是这样的 编号:111 密码:222 编号:123 密码:321 编号:124 密码:331 变成 编号:111密码:222 编号:123密码࿱…...

vue学习day03-指令修饰符、v-bind对于样式控制的增强、v-model应用于其他表单元素
7、指令修饰符 (1)概念: 通过“.”指明一些指令后缀,不同后缀封装了不同的处理操作->简化代码 (2)按键修饰符 keyup.enter->键盘回车监听 (3)v-model修饰符 v-model.tri…...

JRE、JVM、JDK分别是什么。
JDK JDK的英文全称是Java Development Kit。JDK是用于制作程序和Java应用程序的软件开发环境。JDK 是 Java 开发工具包,它是 Java 开发者用来编写、编译、调试和运行 Java 程序的集合。JDK 包括了 Java 编译器(javac)、Java 运行时环境&…...

台灯护眼是真的吗?台灯怎么选对眼睛好?一文带你读懂!
近视问题,这一现代社会的“视力杀手”,正悄然影响着越来越多的人群,尤其是青少年群体。长时间面对电子屏幕和书本,加上不正确的用眼习惯,使得视力下降成为普遍现象。在此背景下,一款优质的护眼台灯显得尤为…...

【学术会议征稿】第五届计算机工程与智能控制学术会议(ICCEIC 2024)
第五届计算机工程与智能控制学术会议(ICCEIC 2024) 2024 5th International Conference on Computer Engineering and Intelligent Control 第五届计算机工程与智能控制学术会议(ICCEIC 2024)将于2024年10月18日至22日在广州举办࿰…...

【Golang】slice切片
slice Go语言的切片是对数组的抽象。 数组的使用 package mainimport ("fmt" )// 传递固定长度的数组还是值传递的方式 func printArray(myArray [5]int) {for index, value : range myArray {fmt.Println("index:", index, "value:", value)…...

开源网安模糊测试平台SFuzz全新升级,从标准到实践助力车企安全出海
开源网安模糊测试平台SFuzz全新升级,参照各国相关标准要求进行针对性建设,可为智能网联汽车信息安全测试提供更为强大的工具支持。SFuzz向被测系统输入大量随机数据,模拟各种异常情况,可以发现被测系统内潜在的缺陷和漏洞…...

Go bytes包
bytes包 Go 语言中的 bytes 包提供了用于操作字节切片的函数集合。字节切片是 Go 语言中非常常用的数据类型,用于表示二进制数据或 UTF-8 编码的字符串。 bytes 包主要功能 操作和处理字节切片搜索和比较字节切片修改和分割字节切片读取和写入字节切片 使用场景 字…...

将List切割为多个指定长度的多个List
参考: https://blog.csdn.net/baidu_41480640/article/details/122507018https://blog.csdn.net/H1767410/article/details/138333350https://blog.51cto.com/u_16213352/7632003https://blog.csdn.net/2301_82243396/article/details/137900249 手写1 private List<List&l…...

【实战】mysql加密函数AES_ENCRYPT无缝迁移到磐维2.0的加密函数MY_ENCRYPT_AES128
在mysql迁移到磐维2.0数据库过程中,mysql使用AES_ENCRYPT函数进行加密。 在磐维2.0数据库中,对应的加密函数为MY_ENCRYPT_AES128 --mysql使用AES_ENCRYPT进行加密,AES_DECRYPT解密 select HEX(AES_ENCRYPT(test1234,abcd2024)) from dual; …...

使用YOLO训练好自己的模型并持续训练【教程二】
前言 在使用已经训练好的 YOLOv5 模型继续训练时,如果减少了 yaml 文件中的 classes 分类数,这会对模型产生影响。具体影响取决于以下几个方面: 类别数量减少:如果你在继续训练时减少了 classes 中的类别数量,模型将不…...

STC32G/F/8H通用无刷电机驱动板
STC32G/F/8H通用无刷电机驱动板 📌相关篇《低成本STC32G8K64驱动控制BLDC开源入门学习方案》 ✨该驱动板是在上一版的基础上改版而来。这里的STC32G/F/8H所指的是封装型号为-LQFP48的STC32G8K64、STC32G12K128、STC32F12K54、STC8H8K64U。是一款兼容有感和无感设计的…...

java Web 优秀本科毕业论文系统用eclipse定制开发mysql数据库BS模式java编程jdbc
一、源码特点 JSP 优秀本科毕业论文系统是一套完善的web设计系统,对理解JSP java serlvet 编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发,数据库为Mysql5.0&a…...

SAP_MMABAP模块_MM60物料清单通过增强新增物料描述
业务背景: 用户需要在系统标准的物料主数据查询报表MM60中,添加物料组描述,一直以来,我都觉得标准的MM60显示的内容字段不够多,不太好用。 以往都是给用户新开发一个物料主数据查询报表来解决的,但是这次刚…...

lodash中flush的使用(debounce、throttle)
在项目的配置中,看到了一个请求,类似是这样的 import { throttle } from lodash-es// 请求函数 async function someFetch(){const {data} await xxx.post()return data }// 节流函数 async function throttleFn(someFetch,1000)// 执行拿到数据函数 a…...

设计高并发秒杀系统:保障稳定性与数据一致性
✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 目录 引言 一. 系统架构设计 1. 系统架构图 二、 系统流程 三…...

从源码到成品:直播电商与短视频带货APP的开发之路
本篇文章,笔者将详细探讨从源码到成品,直播电商与短视频带货APP的开发过程。 一、市场调研与需求分析 通过用户调研,可以确定目标用户群体的需求,从而为产品的功能设计提供依据。 1.1市场分析 消费者对视频内容的偏好ÿ…...