当前位置: 首页 > news >正文

Python基础3

目录

1. 函数多返回值

2. 函数多种传参方式

3. 匿名函数

3.1 函数作为参数传递

3.2 lambda匿名函数

4. 文件的读取操作

4.1 open()打开函数

4.2 读操作方法

4.3 文件的写入

4.4 文件的追加

5. 异常的捕获方法

5.1 捕获常规异常

5.2 捕获指定异常

5.3 捕获多个异常

5.4 捕获异常并输出信息

5.5 捕获所有异常

5.6 异常else

5.7 异常的finally

6. 异常的传递

7. 模块的导入方式

8. 自定义模块

8.1 测试模块:if __name__ == '__main__':

8.2 __all__


1. 函数多返回值

按照返回值的顺序,写多个变量接收,变量之间用逗号隔开,支持不同类型的数据return。

2. 函数多种传参方式

共有4种常见的传参方式:

  1. 位置参数
  2. 关键词参数
  3. 缺省参数
  4. 不定长参数

——————————————————

  • 位置参数

位置参数:调用函数时根据函数定义的参数位置来传递参数。

注意:传递的参数和定义的参数的顺序及个数必须一致。

  • 关键字参数

关键字参数:函数调用时通过“键=值”的形式传递参数。

由上可知,关键字参数不需要参数的顺序一致,以键值对的形式传递。

  • 缺省参数

缺省参数:缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)。

作用:当调用函数时没有传递参数, 就会使用默认是用缺省参数对应的值。

注意:函数调用时,如果为缺省参数传值则修改默认参数值, 否则使用这个默认值。

  • 不定长参数

不定长参数:不定长参数也叫可变参数. 用于不确定调用的时候会传递多少个参数(不传参也可以)的场景。

作用:当调用函数时不确定参数个数时, 可以使用不定长参数。

不定长参数的传递类型:

  1. 位置传递
  2. 关键字传递

位置传递:

注意:传过去的所有参数都会被args变量收集,它会根据传过来的参数的位置合并为一个元组,args是元组类型。

关键字传递:

注意:参数是“键=值”的形式,所有的“键=值”都会被kwargs接收,同时组成一个字典。

3. 匿名函数

3.1 函数作为参数传递

这是一种计算逻辑的传递,而非数据的传递。

3.2 lambda匿名函数

函数的定义中:

  • def关键字,可以定义带有名称的函数
  • lambda关键字,可以定义匿名函数(无名称)

有名称的函数可以通过名字多次使用;无名称的匿名函数,只可以临时使用一次。

匿名函数定义依法:lambda 传入参数:函数体(一行代码)

  • lambda是关键字,表示定义的是匿名函数
  • 传入参数表示匿名函数的形参,如:x,y表示接收两个参数
  • 函数体,就是函数的执行逻辑,注意:只能写一行,无法写多行代码

4. 文件的读取操作

4.1 open()打开函数

语法:open(name,mode,encoding)

  • name:是要打开的文件名的路径。
  • mode:设置打开文件的模式:只读、写入、追加。
  • encoding:编码格式(常用UTF-8)。

mode常用的三种访问模式:

4.2 读操作方法

  • read()方法:

文件对象.read(num)

num表示要从文件中读取的数据长度(单位是字节),如果没有传入num,就读取文件中的所有数据。

  • readlines()方法:

readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

  • readline()方法:

一次读取一行的内容。

  • for循环读取文件:

  • close()关闭文件对象

————————————————————

  • with open语法:

该方法可以在操作完成后自动关闭close文件,避免遗忘close方法。

4.3 文件的写入

例子:

  • 直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区。
  • 当调用flush的时候,内容会真正写入文件。
  • 这样做是避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写磁盘)。

注意:用‘w’模式时,文件如果不存在,则会创建新文件;文件如果存在,会将原来的所有内容清空。close()方法自带flush()方法的功能。

4.4 文件的追加

  • a模式下,文件不存在会创建文件
  • a模式下,文件存在会在文件的最后追加写入新内容

5. 异常的捕获方法

捕获异常的作用:提前假设某处会出现异常,做好提前准备,当真的出现异常的时候,可以有后续的手段。

5.1 捕获常规异常

基本语法:

try:

        可能发生错误的代码

except

        如果出现异常时执行的新代码

例如:

5.2 捕获指定异常

基本语法:

try:

        print(name)

except NameError as e:

        print(“name变量名称未定义错误”)

注意:

  • 如果尝试执行的代码的异常类型和要捕获的异常类型不一致时,则无法捕获异常。
  • 一般try下方只放一行尝试执行的代码。

5.3 捕获多个异常

当捕获多个异常时,可以把要捕获的异常类型的名字,放到except 后,并使用元组的方式进行书写。

try:

        print(1/0)

except (NameError,ZeroDivisionError):

        print(“ZeroDivision错误。。。”)

5.4 捕获异常并输出信息

基本语法:

try:

        print(num)

except (NameError,ZeroDivisionError):

        print(e)

5.5 捕获所有异常

基本语法:

try:

        print(num)

except Exception as e:

        print(e)

5.6 异常else

else表示的是如果没有异常要执行的代码。

try:

        print(num)

except Exception as e:

        print(e)

else:

        print(“没有异常执行的代码”)

5.7 异常的finally

finally表示的是无论是否异常都要执行的代码,例如关闭文件。

try:
    f = open('123.txt','r')
except Exception as e:
    f= open('123.txt','w')

else:

        print(“没有异常”)

finally:

        f.close()

————————————————————————

6. 异常的传递

异常是具有传递性的,当所有函数都没有捕获异常的时候,程序就会报错。

7. 模块的导入方式

  • import 模块名:导入整个模块
  • from 模块名 import 功能名:导入模块的某个方法

  • from 模块名 import *:导入模块的所有方法

  • import 模块名 as 别名:将模块取个别名

  • from 模块名 import 功能名 as 别名:将模块的某个功能取个别名

8. 自定义模块

每个Python文件都可以作为一个模块,模块的名字就是文件的名字. 也就是说自定义模块名必须要符合标识符命名规则。

注意:当导入多个模块时,且模块中有同名的功能,当调用这个功能的时候,默认调用到的是最后一个导入的模块的功能。

8.1 测试模块:if __name__ == '__main__':

当一个模块中想要添加一些测试信息时,有不想这些测试信息在调用时被运行,就用到了我们的测试模块:

8.2 __all__

如果一个模块文件中有`__all__`变量,当使用`from xxx import *`导入时,只能导入这个列表中的元素。

当要使用'__all__'变量之外的功能时,可以直接用from 模块 import 功能去导入使用。

相关文章:

Python基础3

目录 1. 函数多返回值 2. 函数多种传参方式 3. 匿名函数 3.1 函数作为参数传递 3.2 lambda匿名函数 4. 文件的读取操作 4.1 open()打开函数 4.2 读操作方法 4.3 文件的写入 4.4 文件的追加 5. 异常的捕获方法 5.1 捕获常规异常 5.2 捕获指定…...

高可用集群(HAC)

1、高可用集群keepalive说明 高可用定义: 目的:尽可能的提高服务的可用性 99%、99.9%、99.99%、99.999% 实现原理:心跳检测服务: 有状态: MySQL 无状态: apacheLVS Keepalive原理 案例环境专为 LVS和…...

python基于django微信小程序的适老化老人健康预警小程序

随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代, 适老化老人健康预警微信小程序就是信息时代变革中的产物之一。 任何系统都要遵…...

基于微信小程序图书馆管理系统

开发工具:IDEA、微信小程序服务器:Tomcat9.0, jdk1.8项目构建:maven数据库:mysql5.7前端技术:vue、uniapp服务端技术:springbootmybatis-plus本系统分微信小程序和管理后台两部分,项…...

将镭神C32激光雷达的PointXYZ数据转化为PointXYZIR格式 - 附代码

之前遇到过“镭神32线激光雷达ROS下运行fromRosMsg()报错 Failed to find match for field “intensity“ 问题”, 当时确定了是镭神C32雷达缺少相应字段,并记录博客【学习记录】镭神32线激光雷达ROS下运行fromRosMsg()报错 Failed to find match for fi…...

高级前端一面面试题集锦

详细说明 Event loop 众所周知 JS 是门非阻塞单线程语言,因为在最初 JS 就是为了和浏览器交互而诞生的。如果 JS 是门多线程的语言话,我们在多个线程中处理 DOM 就可能会发生问题(一个线程中新加节点,另一个线程中删除节点&#…...

Java基础 -- List集合

Java基础 -- List集合1. Introduction1.1 好处1.2 常用泛型2. 交集,差集等2.1 自身的方法2.2 1.8jdk stream 新特性2.3 Apache的CollectionUtils工具类(推荐)3. 限定泛型范围4. Awakening1. Introduction 1.1 好处 代码复用,多种…...

【Linux】网络编程 - Socket套接字/基于UDP的网络通信

目录 一.套接字 1.什么是套接字/Socket套接字 2.套接字的分类 3.Socket套接字的常见API 二.网络字节序 1.什么是网络字节序 2.网络字节序和主机字节序的转换接口 三.IP地址形式上的转换 四.客户端的套接字不由程序员bind 1.为什么客户端套接字不能由程序员bind 2.OS…...

流程引擎之Camunda简介

背景Camunda 是支持 BPMN(工作流和流程自动化)、CMMN(案例管理) 和 DMN(业务决策管理) java 框架。Camunda 基于Activiti5 保留了 PVM,其开发团队也是从 activiti 中分裂出来的。Camunda 来自拉…...

Mybatis笔记整理

1. 相关文档地址 中文文档 https://mybatis.org/mybatis-3/zh/index.htmlMybatis可以配置成适应多种环境&#xff0c;不过每个SqlSessionFactory实例只能选择一种环境。Mybatis默认事务管理器是JDBC&#xff0c;连接池&#xff1a;POOLEDMaven仓库:下载地址<dependency>…...

【react全家桶】面向组件编程

文章目录02 【面向组件编程】1.组件的使用1.1 函数式组件1.2 类式组件1.3 组合组件1.4 提取组件组件实例的三大属性 state props refs2.state2.1 基本使用2.2 setState()2.3 简化版本2.4 State 的更新可能是异步的2.5 异步更新解决方案2.6 数据是向下流动的3.props3.1 基本使用…...

Django框架之模型视图-使用 PostMan 对请求进行测试

使用 PostMan 对请求进行测试 PostMan 是一款功能强大的网页调试与发送网页 HTTP 请求的 Chrome 插件&#xff0c;可以直接去对我们写出来的路由和视图函数进行调试&#xff0c;作为后端程序员是必须要知道的一个工具。 安装方式1&#xff1a;去 Chrome 商店直接搜索 PostMan…...

(考研湖科大教书匠计算机网络)第五章传输层-第四节:TCP流量控制

获取pdf&#xff1a;密码7281专栏目录首页&#xff1a;【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一&#xff1a;流量控制概述二&#xff1a;流量控制举例三&#xff1a;拓展阅读&#xff08;可不看&#xff09;&#xff08;1&#xff09;TCP流量控制完整例子&a…...

使用Docker-Compose搭建Redis集群

1. 集群配置3主3从由于仅用于测试&#xff0c;故我这里只用1台服务器进行模拟redis列表2.编写redis.conf在server上创建一个目录用于存放redis集群部署文件。这里我放的路径为/root/redis-cluster 在/opt/docker/redis-cluster目录下创建redis-1,redis-2,redis-3,redis-4,redis…...

华为OD机试 -计算网络信号(Js)

计算网络信号 题目 网络信号经过传递会逐层衰减,且遇到阻隔物无法直接穿透,在此情况下需要计算某个位置的网络信号值。 注意:网络信号可以绕过阻隔物 array[m][n] 的二维数组代表网格地图,array[i][j] = 0代表 i 行 j 列是空旷位置;array[i][j] = x(x 为正整数)代表 i 行 …...

【数据结构】————栈

文章目录前言栈是什么&#xff0c;栈的特点实现栈的基本操作栈的相关操作声明1.创建栈2.对栈进行初始化3.销毁栈4.判断栈是否为空5.压栈操作6.删除栈顶元素7.取出栈顶元素8.计算栈内存放多少个数据总结前言 本文主要讲述特殊的线性表——栈&#xff1a; 栈是什么&#xff0c;栈…...

从零编写linux0.11 - 第十一章 可执行文件

从零编写linux0.11 - 第十一章 可执行文件 编程环境&#xff1a;Ubuntu 20.04、gcc-9.4.0 代码仓库&#xff1a;https://gitee.com/AprilSloan/linux0.11-project linux0.11源码下载&#xff08;不能直接编译&#xff0c;需进行修改&#xff09; 本章目标 本章会加载并运行…...

Win10上通过nginx代理配置远程非445端口SMB

引言 家里架了一个SMB文件服务器&#xff0c;想要远程访问&#xff0c;开了445端口&#xff0c;但仅限某些特殊网络可以远程访问&#xff0c;其他网络全部拒绝445端口&#xff0c;因此网上找了很多将Win10的SMB指向别的端口的教程&#xff0c;但所有教程均使用环回网卡解决&am…...

Allegro如何快速清除多余的规则设置操作指导

Allegro如何快速清除多余的规则设置操作指导 在用Allegro做PCB设计的时候,会给PCB设置一些规则,在PCB设计完成之后,可能会有一些没有使用到的规则,如下图 Physical规则中的45OHM的规则是多余的 单独某个规则可以直接在规则管理器中删除,如果比较多可以用下面方法批量删除…...

ROS2 入门应用 引用自定义消息(Python)

ROS2 入门应用 引用自定义消息&#xff08;Python&#xff09;1. 查看自定义消息2. 修改话题发布3. 修改话题订阅4. 修改依赖关系5. 编译和运行1. 查看自定义消息 引用在《ROS2 入门应用 创建自定义接口》中自定义的消息Sphere.msg ros2 interface show tutorial_interfaces/…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙

Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...

Monorepo架构: Nx Cloud 扩展能力与缓存加速

借助 Nx Cloud 实现项目协同与加速构建 1 &#xff09; 缓存工作原理分析 在了解了本地缓存和远程缓存之后&#xff0c;我们来探究缓存是如何工作的。以计算文件的哈希串为例&#xff0c;若后续运行任务时文件哈希串未变&#xff0c;系统会直接使用对应的输出和制品文件。 2 …...