Python学习笔记10:入门知识(十)

news2024/12/23 15:10:15

函数

什么是函数

简单来说就是具备某些特定功能的带有名称的代码块。比如之前我们讲过的列表的增删改查函数,排序函数等等。

函数的作用

  1. 代码复用。函数作为具备某些特定功能的代码块,当你的程序需要多次使用同一段业务逻辑的时候,使用函数可以减少无用代码。
  2. 模块化设计。函数支持将大型程序分解成小的、逻辑上独立的部分,每个部分完成特定功能。这种模块化设计使得代码更易于理解、测试和维护。
  3. 提高可读性。给函数命名可以直观表达其功能,使阅读代码的人能够快速理解代码的目的,而不必深入细节。
  4. 控制复杂度:面对复杂问题时,通过定义多个函数分别处理不同子任务,可以降低问题的解决难度,使编程逻辑更加清晰。

函数的优点

  1. 重用代码:减少重复,提高效率。
  2. 模块化:简化复杂度,易于维护。
  3. 清晰性:命名明确,易于理解。
  4. 灵活参数:适应多样输入,增强通用性。
  5. 封装抽象:隐藏细节,促进独立开发。
  6. 嵌套递归:处理复杂逻辑,实现深度计算。
  7. 文档测试:便于说明与验证,确保质量。
  8. 装饰器:无需改代码即可增强功能,提升扩展性。

函数的使用

定义一个函数

def function_name(parameters):
    # 函数体
    return value
  1. def:在Python中,使用def关键字来定义一个函数。
  2. function_name:定义函数的名称。通常函数的名称要与函数的功能呼应,这样使得代码可读性和可维护性提高。
  3. parameters:函数入参。在Python中,函数定义时使用的参数称为形式参数(形参),而调用函数时传递给函数的具体值称为实际参数(实参)。
  4. return:函数返回值,当函数执行完毕后,返回给函数调用方的值。定义函数的时候可以不返回值,但是Python会默认返回None。
    这里就展示一下不设置返回值的,会返回默认值

参数的使用

  1. 普通使用。
    在这里插入图片描述
    在这里,我们定义了一个计算和的函数,返回计算结果。
  2. 位置实参按顺序使用
    在这里插入图片描述
    一般情况下,函数中的参数是默认按顺序使用的,但是实际上这样使用很容易出现错误。
  3. 关键字实参使用
    在这里插入图片描述
    在调用的时候,带上调用函数的参数名,那么不管顺序如何,参数都能正确的使用
  4. 参数默认值使用
    在这里插入图片描述
    有时候参数的值不需要每次都写,那么就可以设置一个默认值。当你遇到这种调用函数的时候,可以不传递有默认值的参数,函数会使用你定义时设置的默认值。
  5. 匿名函数使用
    在这里插入图片描述
    匿名函数使用有点不算入门的语法,需要认真理解一下,而且匿名函数通常很少复用,函数实现非常简单的场景。
    使用方法是lambda关键字:lambda parameters :function_content
    入门阶段不是很建议使用,这里写出来主要是为了大家在看到这种写法的时候不懵逼。

在函数中修改参数

在之前的函数中,我们使用参数计算值,返回新的变量或者干脆就是打印参数。在实际编程的时候,函数的作用往往没有这么简单,通常会在函数中做一些循环,运行之类的操作,那么这些操作对参数有影响吗?
在这里插入图片描述
从这里看,在调用set_param函数是的参数a,b的值虽然在里面重新设置过,但是没有影响到a,b之前的值。
在这里插入图片描述
定义了一个新的函数,在函数中移出a的元素,放到b里面。函数执行结束发现a列表元素都转移到了b列表中。
为什么?

值传递和引用传递
  1. 值传递:对于不可变数据类型(如整数、浮点数、字符串、元组等),参数是以值传递的方式传递的。这意味着当函数接收这些类型的参数时,函数内部对参数的修改不会影响到外部变量的值,因为函数内创建的是参数值的一个副本。

  2. 引用传递:对于可变数据类型(如列表、字典、集合、自定义对象等),参数是以引用传递的方式传递的。这意味着当你将这些类型的对象作为参数传递给函数时,函数内部实际上接收到的是对象在内存中的地址(引用)。因此,如果在函数内部修改了这个对象(如添加、删除、修改元素等),这些改动会影响到原始数据。

在定义函数及使用函数的时候,一定要特别注意这两个传递,防止函数的执行结果出乎你的意料。

函数的高级特性

闭包:函数可以记住并访问其外部作用域的变量
装饰器:允许用户在不修改函数内容的情况下增加函数功能

稍微了解一下就行,咱只是入门现在。

什么是库

库是一组相关的模块的集合,用于提供额外的功能。

什么是模块

包含Python代码的文件,可以是函数、类和变量等

库的作用

  1. 复用代码:库是一系列预先编写、测试过的代码模块的集合,提供了通用功能的实现。通过使用库,开发者可以避免重复造轮子,直接调用现成的函数或类来完成特定任务,从而提高开发效率。

  2. 简化复杂任务:许多库针对特定领域或复杂功能(如图形渲染、机器学习、网络请求、数据库操作等)提供了高级抽象,使得开发者能够以更简洁的代码完成复杂的任务,而无需深入了解底层实现细节。

  3. 标准化开发:广泛接受的库往往遵循一定的设计模式和最佳实践,使用这些库可以帮助团队保持代码的一致性和可读性,便于维护和协作。

  4. 提高性能和稳定性:许多库由经验丰富的开发者或团队开发,并经过大量实际应用的检验,它们通常经过优化,能提供更好的性能和稳定性。例如,专门的数学库可能比手写算法更快、更准确。

  5. 安全性增强:特别是在处理敏感数据或执行安全相关操作时(如加密、认证),使用经过验证的库可以减少安全漏洞的风险,因为这些库往往包含了最新的安全协议和防护措施。

  6. 跨平台兼容性:一些库设计用于提供跨平台的支持,使得开发者编写的代码可以在不同的操作系统或硬件环境下无缝运行,减少了平台特定代码的编写需求。

  7. 社区支持和文档:流行的库通常拥有活跃的社区和详细的文档,当开发者遇到问题时,可以快速找到解决方案或获得帮助,降低了学习成本和开发难度。

库的使用

库的使用在实际编程中非常常见,尤其是你实现一些基础的,已有明确规范的功能的时候,往往可以通过导入库来直接调用库中的方法,稳定性和性能都比你自己写要好(起码对于入门的我们来说,是要好)。

常见的一些库:

math:数学运算库
datetime:日期和时间处理库
numpy:科学计算库
pandas:数据分析库
matplotlib:绘图库

如何使用这些库呢?
使用import关键字加库名即可。

import library_name

如果你在IDE,也就是我们的pychram中输入以后,库名下面有红色波浪线,你鼠标光标放上去提示模块不存在,那么说明你没安装这个库,需要安装一下。
使用 pip install library_name 命令安装库,在终端执行。
如图所示。
在这里插入图片描述

作业

今天的函数和库比较重要,一定要动手练习!

  1. 编写一个函数,计算两个数的和。
  2. 编写一个函数,接受一个列表,返回列表中的最大值。
  3. 使用默认参数和可变参数,编写一个函数打印学生信息。
  4. 使用math库计算圆的面积。
  5. 使用datetime库获取当前时间,并格式化输出。
  6. 使用numpy库创建一个数组,并计算其平均值和标准差。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KT-H6测距模块标品,测距范围1500m,demo报价1000RMB,批量报价500RMB

激光测距传感器是一种用于测量距离的模块,通常由传感器和相关电子设备组成,测距模块可以集成到各种设备和系统中,以实现准确的测距和定位功能。KT-H6系列激光测距模块,为自主研发,激光波长905nm的激光器,专为热成像、夜视仪、无人机、安防、瞄具等产品定身打造,其优点是…

msvcp120.dll丢失原因分析与解决方法分享

msvcp120.dll 是一个动态链接库(Dynamic Link Library, DLL),属于 Microsoft Visual C 2013 再发行组件包的一部分。它提供了 C 标准库的实现,使得使用 C 编写的应用程序能够在运行时动态链接到该库,从而访问其提供的函…

头歌资源库(6)汉诺塔(递归)

一、 问题描述 二、算法思想 首先定义一个函数,接收四个参数:n表示当前需要移动的盘子数量,A表示起始基座,B表示目标基座,C表示辅助基座。 在函数内部,首先判断如果n为1,即只有一个盘子需要…

父亲节 | 10位名家笔下的父亲,读懂那份孤独而深沉的父爱

Fathers Day 母爱如水,父爱如山。 相对于母爱的温柔,父亲的爱多了几分静默和深沉。 读完10位名家笔下的父亲,我们就会明白,到底亏欠了父亲多少。 不要让自己有“子欲养而亲不待”的后悔和遗憾, 多给父亲一些爱的表示&a…

项目进度和成本管理

1.如何正确标识出软件项目活动? 正确标识软件项目活动是项目管理中的一个重要步骤,它有助于确保项目的顺利进行和成功完成。以下是一些标识软件项目活动的步骤和建议: 项目范围定义:首先明确项目的目标和范围,这将帮助…

某集团数字化转型蓝图规划项目案例(94页PPT)

案例介绍: 本集团数字化转型蓝图规划项目通过确定目标,如制定集团数字化转型的整体战略和规划,明确转型方向和目标。构建数字化业务体系,实现业务流程数字化、智能化。搭建数字化管理平台,提升集团内部的管理效率和决…

c语言——扫雷游戏(简易版)

目录 前言游戏设计 前言 什么是扫雷游戏? 游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。 这个游戏对于c语言的初学者来说难度还是挺大的,那我就实现一个初学者也能快速学…

C++ 55 之 多继承

#include <iostream> #include <string> using namespace std;class Base08_1{ public:int m_a;Base08_1(){this->m_a 10;} };class Base08_2{ public:// int m_b;int m_a;Base08_2(){// this->m_b 20;this->m_a 30;} };// 多继承 继承的类型都要…

sort使用

具体使用 bool myfunction(int i, int j) { return (i < j); }class my_function { public:bool operator()(int i, int j) { return (i < j); } }; int main() {int array[] { 4,1,8,5,3,7,0,9,2,6 };// 默认按照小于比较&#xff0c;排出来结果是升序std::sort(array…

汉邦高科防监控初始化恢复方法

汉邦高科算是安防市场上的三线品牌&#xff0c;产品不算多&#xff0c;但在某些地域有一定的市场份额。下面我们看下汉邦高科安防监控格式化后如何恢复数据&#xff1a; 故障存储:ST300VM002 故障现象: 由于各种原因录像机被初始化&#xff0c;导致数据全部丢失&#xff0c;…

逻辑斯蒂回归与最大熵

知识树 感知机的缺陷 修补感知机缺陷-逻辑斯蒂回归 下面这两个值是强制给的,不是推导的 最大熵 最大熵的一个小故事 最大熵模型 我们最终目标是要求P(Y|X) 书上写的是H,但是2我们认为H(Y|X)更合适 咱们最终的目的是要用拉格朗日乘数法,所以需要约束 总结 感觉深度之眼比较模…

xinput1_3.dll怎么安装,关于xinput1_3.dll的多种修复方法分享

在电脑使用过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中之一就是“找不到xinput1_3.dll”。那么&#xff0c;xinput13.dll到底是什么&#xff1f;为什么会出现找不到的情况&#xff1f;它对电脑有什么影响&#xff1f;本文将为您详细解析xinput1_3.dll的含义…

【stm32-新建工程】

stm32-新建工程 ■ 下载相关STM32Cube官方固件包&#xff08;F1&#xff0c;F4&#xff0c;F7&#xff0c;H7&#xff09;■ 1. ST官方搜索STM32Cube■ 2. 搜索 STM32Cube■ 3. 点击获取软件■ 4. 选择对应的版本下载■ 5. 输入账号信息■ 6. 出现下载弹框&#xff0c;等待下载…

【SpringBoot项目常见细化错误】(保姆级教程)Result Maps collection already contains value for

SpringBoot项目常见错误 1.当Mybatis报错 Result Maps collection already contains value for一、重复点击Mybatis-Generator导致配置文件重复生成XML二、正确配置Yml仔细检查有没有多了或者少了一个空格三、spring boot mybatis四、应该用resultMap来接收返回值&#xff0c;…

2024数据库期末综合解析(部分题)

目录 第4关&#xff1a;数据记录修改 任务描述 补充 答案&#xff1a; 第6关&#xff1a;数据查询二 任务描述 补充 答案&#xff1a; 第4关&#xff1a;数据记录修改 任务描述 湖南人口hnpeople数据表如下所示 各字段含义如下 cs&#xff08;城市)、qx(区县)、rk(人口)、man(男…

workhome 2024.06.16 math-6

数学分析语句断句&#xff0c;分析&#xff0c;画画做图&#xff0c;逻辑&#xff0c;解析&#xff0c;计算过程&#xff0c;严谨&#xff0c;我们程序出错多数是因为不够严谨&#xff0c;少了漏了可能出现的情况。 1&#xff09; https://download.csdn.net/download/spencer_…

基于JSP技术的个人网站系统

开头语&#xff1a; 你好呀&#xff0c;我是计算机学长猫哥&#xff01;如果有相关需求&#xff0c;文末可以找到我的联系方式。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP JavaBeans Servlet 工具&#xff1a;Eclipse、MySQL Workbench、…

使用STL算法函数有效提升STL列表的搜索速度(附源码)

STL(Standard Templete Library)活动模板库已被广泛地应用于各种C++程序的开发中,STL中vector、list、map等列表极大地方便了我们日常的开发,不再需要我们去实现链表等数据结构,使用这些列表能基本能解决开发过程中遇到的各种问题。网上关于STL的文章比较多,今天我们就来…

购物车店铺列表查询流程

购物车店铺列表查询流程 购物车结算流程图

力扣54. 螺旋矩阵

给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5] 示例 2&#xff1a; 输入&#xff1a;matrix [[1,2…