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

函数

什么是函数

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

函数的作用

  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库创建一个数组,并计算其平均值和标准差。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vite使用unplugin-auto-import实现vue3中的自动导入

unplugin-auto-import 是基于 unplugin 写的,支持 Vite、Webpack、Rollup、esbuild 多个打包工具。我们可以使用unplugin-auto-import实现依赖的自动导入,不用再频繁导入依赖包,从而提交我们的开发效率。如下,以vue3vite中使用改插…

Linux基础I/O之文件描述符fd 重定向(上)

目录 一、预备知识 二、C语言中的文件接口 三、系统调用中的文件接口 一、预备知识 首先我们要明确的一个观点是 --- 文件 内容 属性。而且我们之前也还将过一个概念,那就是Linux下一切皆文件。 内容是数据,属性也是数据 --- 那么也就是说我…

戴尔第十一代十二代十三代处理器重装系统找不到驱动程序

一、戴尔第十一代十二代十三代处理器重装系统找不到驱动程序 VMD(Volume Management Device)是针对下一代存储推出的部署方案。这套方案支持从 PCIe 总线对 NVMe 固态盘进行热升级和更换,而无需关闭系统,同时标准化 LED 管理可帮助…

梦想编织者Luna:COZE从童话绘本到乐章的奇妙转化

前言 Coze是什么? Coze扣子是字节跳动发布的一款AI聊天机器人构建平台,能够快速创建、调试和优化AI聊天机器人的应用程序。只要你有想法,无需有编程经验,都可以用扣子快速、低门槛搭建专属于你的 Chatbot,并一键发布…

JavaFX 节点

JavaFX Node类javafx.scene.Node是添加到JavaFX 场景图的所有组件 的基类(超类) 。JavaFX Node 类是抽象的,因此你只需将 Node 类的子类添加到场景图中。场景图中的所有 JavaFX Node 实例共享一组由 JavaFX Node 类定义的公共属性。本 JavaFX…

快速搭建Jenkins自动化集成cicd工具

一、简介 jenkins是一款优秀的自动化持续集成运维工具,可以极大的简化运维部署的步骤。 传统的项目部署需要手动更换最新的项目代码,然后打包并运行到服务器上。 使用Jenkins可以自动化实现,当代码编写完成并提交到git后,Jenki…

【单片机毕业设计选题24009】-基于单片机的智能窗帘控制系统设计

系统功能: 采用STM32最小系统板控制,采集传感器数据显示在OLED上并可通过按键或红外遥控器控制两路继电器和步进电机。 1. 使用DHT11模块采集环境温湿度 2. 使用光敏传感器采集光照强度 3. 继电器模拟加温(采集温度小于设定温度时) 4. 继…

定点数的加减法以及浮点数的表示

加减法运算是计算机中最基本的计算,由于减法可以看成是负值是加法,因此计算机中使用补码表示有符号数之后,可以将减法运算和加法运算合并在一起讨论。 1.补码的加减运算 补码加减运算的规则简单,公式如下(设机器字长为n)&#x…

【Windows11 安装 Detectron2】

Windows11 安装 Detectron2 1. 创建虚拟环境2.配置Pytorch环境3. 安装cocoapi4. 下载detectron24.1 修改setup.py4.2 修改 nms_rotated_cuda.cu(detectron2\detectron2\layers\csrc\nms_rotated\nms_rotated_cuda.cu) 5. 开始下载依赖库以及编译环境6.测…

【权威出版/投稿优惠】2024年智慧城市与信息化教育国际会议(SCIE 2024)

2024 International Conference on Smart Cities and Information Education 2024年智慧城市与信息化教育国际会议 【会议信息】 会议简称:SCIE 2024 大会时间:点击查看 大会地点:中国北京 会议官网:www.iacscie.com 会议邮箱&am…

Windows10安装Docker Desktop(实操步骤版)

1,下载Docker Desktop 官网下载地址: https://desktop.docker.com/win/stable/amd64/Docker%20Desktop%20Installer.exe 国内镜像下载地址(本人下载这个): https://smartidedl.blob.core.chinacloudapi.cn/docker/2…

MySQL经典面试题:谈一谈你对事务的理解

文章目录 📑事务事务的基本概念回滚开启事务的sql语句 事务的基本特性总结一下涉及到的三个问题 ☁️结语 📑事务 事务的基本概念 事务是用来解决一类特定场景的问题的,在有些场景中,完成某个操作,需要多个sql配合完…

三分钟了解绿色积分消费增值模式

在现今快速发展的经济环境中,绿色积分消费增值模式悄然在市场上崭露头角,引起了社会各界的广泛关注。这一模式起源于加密货币领域的单边上涨理念,经过精心改良,已经成功融入国内的产品盘项目中,展现出其独特的魅力和价…

嵌入式学习记录6.14(练习)

#include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);this->resize(1028,783); //设置左侧背景QLabel *lab1new QLabel(this);lab1->…

C语言期末考试大纲详解

一: C语言的基本概念 C语言是一种通用的、过程式的计算机编程语言,设计提供了低级内存访问和简单、灵活的语言结构。以下是关于C语言的一些基本概念和组成部分的详细解释。 文件扩展名 .c:这是C语言源代码文件的扩展名。它包含了程序员编…

Mysql学习笔记-SQL优化总结

详细内容参见https://blog.csdn.net/qingwufeiyang_530/article/details/139705898?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22139705898%22%2C%22source%22%3A%22qingwufeiyang_530%22%7D

《全网首发》平衡三进制图灵机的构建

PS:以下内容均为本人原创,未经授权及许可,严禁引图、转载或加工,违者必究。 ————2024年6月13号 1、图灵机的概述 图灵机(Turing machine)是一种理论计算模型,由英国数学家阿兰图灵(Alan T…

定个小目标之刷LeetCode热题(16)

针对本题排序流程,主要是将链表拆分为长度为subLength的子链表1和子链表2,然后把子链表1和子链表2合并为一条有序链表,重复上述步骤直到把链表都拆分完,这样这条链表每段长度为2的子链表都是有序的,那么要整条链表有序…

鸿蒙求职面试内容总结——6月3日ZR的FS项目

最近接到了一些公司的入职面试邀约,这里略去公司的和项目的名字,做一些整理分享。 一、长列表如何实现部分渲染,使用的是哪一个API 在鸿蒙系统中,可以使用List组件来实现长列表的部分渲染。List组件支持使用条件渲染、循环渲染、…