Python 语法与数据类型详解
Python 语法与数据类型详解
Python 以其简洁易读的语法和丰富多样的数据类型在编程领域占据重要地位。深入理解 Python 的语法和数据类型是掌握这门语言的关键。
一、Python 语法概述
(一)缩进规则
Python 独特的缩进规则是其语法的重要特征之一。与其他编程语言不同,Python 依靠缩进来表示代码的层次结构,通常使用四个空格作为一个缩进级别。
例如:
if True:# 如果条件为真,则执行这里的代码print("This is inside the if statement.")print("Still inside.")
else:# 如果条件为假,则执行这里的代码print("This is inside the else statement.")
print("Outside the if-else block.")
在这个例子中,通过缩进清晰地划分了 if 语句的代码块。如果缩进不正确,Python 解释器会报错。
(二)注释
注释在代码中起着至关重要的作用,它可以帮助开发者理解代码的功能和逻辑。Python 支持单行注释和多行注释。
- 单行注释以
#
开头,后面的内容将被解释器忽略。
例如:# 这是一个单行注释
。 - 多行注释使用三个单引号
'''
或三个双引号"""
将注释内容括起来。
例如:''' 这是一个多行注释。 可以跨越多行。 ''' """ 这也是一个多行注释。 """
注释应该简洁明了,能够准确地描述代码的功能和目的。在编写复杂的代码时,合理使用注释可以提高代码的可读性和可维护性。
(三)变量命名规则
在 Python 中,变量命名需要遵循一定的规则:
- 变量名只能由字母、数字和下划线组成。
- 变量名不能以数字开头。
- 变量名是区分大小写的。
例如:my_variable
、_private_variable
、variable123
都是合法的变量名,而123variable
是非法的。
变量名应该具有描述性,能够清晰地表达变量的用途。避免使用过于简单或模糊的变量名,以免造成代码的可读性降低。
二、Python 数据类型
(一)整数(int)
整数类型用于表示没有小数部分的数值。Python 的整数可以是任意大小,不受计算机内存限制。
例如:
a = 10
b = -5
c = 0
# 整数的加法运算
print(a + b) # 输出:5
# 整数的乘法运算
print(a * c) # 输出:0
整数可以进行加、减、乘、除、取余等运算。在 Python 中,整数的运算非常灵活,可以处理很大范围的数值。
(二)浮点数(float)
浮点数用于表示带有小数部分的数值。
例如:
d = 3.14
e = 2.5
# 浮点数的除法运算
print(d / e) # 输出:1.256
需要注意的是,由于计算机存储浮点数的方式,可能会存在精度误差。在进行浮点数运算时,要注意精度问题,避免出现意外的结果。
(三)字符串(str)
字符串是由字符组成的序列,可以用单引号、双引号或三引号括起来。
例如:
name = "Alice"
greeting = 'Hello, ' + name
# 输出字符串
print(greeting) # 输出:Hello, Alice
long_text = """这是一个多行字符串。
可以包含多行文本。"""
# 输出多行字符串
print(long_text)
字符串可以进行拼接、切片、查找等操作。字符串方法丰富多样,例如 upper()
方法可以将字符串转换为大写,lower()
方法可以将字符串转换为小写,find()
方法可以查找子字符串在字符串中的位置等。
(四)列表(list)
列表是一种可变的有序集合,可以包含不同类型的元素。
例如:
my_list = [1, "two", 3.0, True]
# 访问列表中的元素
print(my_list[1]) # 输出:two
my_list.append("five")
# 输出列表
print(my_list) # 输出:[1, 'two', 3.0, True, 'five']
列表可以通过索引访问元素,也可以进行添加、删除、修改等操作。列表推导式是一种简洁的方式来创建和操作列表,例如 [x**2 for x in range(10)]
可以创建一个包含 0 到 9 的平方的列表。
(五)元组(tuple)
元组是一种不可变的有序集合,一旦创建,其元素不能被修改。
例如:
my_tuple = (1, 2, 3)
# 访问元组中的元素
print(my_tuple[0]) # 输出:1
# 尝试修改元组中的元素会引发错误
# my_tuple[0] = 4 # 会报错
元组通常用于存储不可变的数据集合。元组可以作为函数的返回值,也可以在需要不可变集合的地方使用。
(六)字典(dict)
字典是一种无序的键值对集合,通过键来访问对应的值。
例如:
my_dict = {'name': 'Bob', 'age': 30}
# 通过键访问值
print(my_dict['name']) # 输出:Bob
my_dict['city'] = 'New York'
# 输出字典
print(my_dict) # 输出:{'name': 'Bob', 'age': 30, 'city': 'New York'}
字典的键必须是不可变类型,如字符串、整数或元组。字典可以通过键来添加、删除和修改值。字典推导式也是一种方便的方式来创建字典,例如 {x: x**2 for x in range(5)}
可以创建一个包含 0 到 4 的平方的字典。
(七)集合(set)
集合是一种无序的、不包含重复元素的集合。
例如:
my_set = {1, 2, 3, 4}
# 添加元素到集合
my_set.add(5)
# 输出集合
print(my_set) # 输出:{1, 2, 3, 4, 5}
集合可以进行并集、交集、差集等操作。集合推导式也可以用于创建集合,例如 {x for x in range(10) if x % 2 == 0}
可以创建一个包含 0 到 9 中偶数的集合。
三、使用注意事项
(一)动态类型与类型推断
Python 是一种动态类型语言,这意味着变量的类型在运行时确定,并且可以随时改变。
例如:
x = 5
# 此时 x 的类型是整数
print(type(x)) # 输出:<class 'int'>
x = "Hello"
# 现在 x 的类型变为字符串
print(type(x)) # 输出:<class 'str'>
虽然这种特性使得编程更加灵活,但也可能导致一些潜在的错误。在使用变量时,要确保对其类型有正确的理解,避免出现类型不匹配的错误。
(二)字符串的不可变性
字符串在 Python 中是不可变的,不能直接修改字符串中的某个字符。如果需要修改字符串,需要创建一个新的字符串。
例如:
s = "Hello"
# 尝试直接修改字符串会引发错误
# s[0] = "h" # 会报错
s = "h" + s[1:]
# 创建了一个新的字符串
print(s) # 输出:hello
在处理大量字符串操作时,要注意字符串的不可变性可能会带来的性能问题。可以考虑使用字符串方法或其他数据结构来提高效率。
(三)列表的可变性与引用
列表是可变的,这意味着可以修改、添加或删除其中的元素。但在使用列表时,要注意引用的问题。
例如:
list1 = [1, 2, 3]
list2 = list1
list2.append(4)
# list2 和 list1 指向同一个列表对象,所以对 list2 的修改也影响了 list1
print(list1) # 输出:[1, 2, 3, 4]
如果需要创建一个独立的副本,可以使用 list.copy()
方法或切片操作。
(四)字典的键类型限制
字典的键必须是不可变类型,如字符串、整数或元组(其中包含的元素也必须是不可变类型)。而列表等可变类型不能作为字典的键。
例如:
my_dict = {1: "one", "two": 2}
# 列表不能作为字典的键
# my_dict[[1, 2]] = "invalid" # 会报错
my_dict[(1, 2)] = "valid"
# 元组可以作为字典的键(如果元组中的元素都是不可变类型)
在使用字典时,要注意键的类型限制,避免出现错误。
(五)集合的操作注意事项
集合的操作是无序的,并且不包含重复元素。在进行集合操作时,要注意结果的不确定性。
例如:
set1 = {1, 2, 3}
set2 = {2, 3, 4}
# 并集操作
print(set1 | set2) # 输出:{1, 2, 3, 4}
# 交集操作
print(set1 & set2) # 输出:{2, 3}
# 差集操作
print(set1 - set2) # 输出:{1}
在使用集合进行复杂的逻辑操作时,要仔细考虑集合的性质和操作的结果。
四、总结
Python 的语法简洁易读,数据类型丰富多样,为开发者提供了强大的编程工具。理解 Python 的语法和数据类型是掌握这门语言的基础,同时,注意使用时的各种注意事项可以避免出现错误,提高代码的质量和效率。通过不断地实践和探索,开发者可以更加熟练地运用 Python 的语法和数据类型,编写出高效、优雅的代码。
无论是进行数据分析、Web 开发、机器学习还是其他领域的编程,Python 都是一个值得学习和掌握的语言。希望本文能够帮助读者更好地理解 Python 的语法和数据类型,为进一步的学习和实践打下坚实的基础。
相关文章:
Python 语法与数据类型详解
Python 语法与数据类型详解 Python 以其简洁易读的语法和丰富多样的数据类型在编程领域占据重要地位。深入理解 Python 的语法和数据类型是掌握这门语言的关键。 一、Python 语法概述 (一)缩进规则 Python 独特的缩进规则是其语法的重要特征之一。与…...
LeetCode题练习与总结:扁平化嵌套列表迭代器--341
一、题目描述 给你一个嵌套的整数列表 nestedList 。每个元素要么是一个整数,要么是一个列表;该列表的元素也可能是整数或者是其他列表。请你实现一个迭代器将其扁平化,使之能够遍历这个列表中的所有整数。 实现扁平迭代器类 NestedIterato…...

51单片机快速入门之 AD(模数) DA(数模) 转换 2024/10/25
51单片机快速入门之 AD(模数) DA(数模) 转换 2024/10/25 声明:本文图片来源于网络 A模拟信号特点: 电压或者电流 缓慢上升 随着时间连续缓慢上升或下降 D数字信号特点:电压或者电流 保持一段时间的高/低电平 状态 / 突变 (高电压瞬间低电压) 数字电路中 通常将0-1v电压称…...
Typora 、 Minio and PicGo 图床搭建
流程介绍 本地安装Typora笔记工具拥有一台装有docker的服务器配置minio云图床管理控制页面下载PicGo上传工具服务器Docker环境搭建—Ubuntu系统 删除旧docker的所有依赖(非root用户) # 删除docker及安装时自动安装的所有包 sudo apt-get autoremove docker docker-ce docker…...

【计网】UDP Echo Server与Client实战:从零开始构建简单通信回显程序
目录 前言: 1.实现udpserver类 1.1.创建udp socket 套接字 --- 必须要做的 socket()讲解 代码实现:编辑 代码讲解: 1.2.填充sockaddr_in结构 代码实现: 代码解析: 1.3.bind sockfd和…...

微服务网关Zuul
一、Zuul简介 Zuul是Netflix开源的微服务网关,包含对请求的路由和过滤两个主要功能。 1)路由功能:负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础。 2)过滤功能:负责对请求的过程…...

BuildCTF线上赛WP
Build::CTF flag不到啊战队--WP 萌新战队,还请多多指教~ 目录 Build::CTF flag不到啊战队--WP Web ez!http find-the-id Pwn 我要成为沙威玛传奇 Misc what is this? 一念愚即般若绝,一念智即般若生 别真给我开盒了哥 四妹,你听…...
《使用Gin框架构建分布式应用》阅读笔记:p143-p207
《用Gin框架构建分布式应用》学习第10天,p143-p207总结,总计65页。 一、技术总结 1.auth0 本人实际工作中未遇到过,mark一下,参考:https://auth0.com/。 2.使用template (1)c.File() (2)router.Static() (3)rou…...

华为网络管理配置实例
目录 组网需求 数据规划 配置思路 操作步骤 结果验证 配置脚本 管理员可以通过eSight网管系统对FW进行监控和管理,接收FW的告警。 组网需求 如图1所示,某企业在网络边界处部署了FW作为安全网关,并部署了eSight网管系统对网络设备进行集中…...
大语言模型数据处理方法(基于llama模型)
文章目录 前言一、基于huggingface的DataCollatorForSeq2Seq方法解读1、DataCollatorForSeq2Seq方法2、batch最长序列填充3、指定长度填充二、构建大语言模型数据加工模块1、数据读取2、数据加工1、数据格式2、预训练(pretrain)数据加工3、微调(sft)数据加工①、sft数据加工…...

爱奇艺大数据多 AZ 统一调度架构
01# 导语 爱奇艺大数据技术广泛应用于运营决策、用户增长、广告分发、视频推荐、搜索、会员营销等场景,为公司的业务增长和用户体验提供了重要的数据驱动引擎。 多年来,随着公司业务的发展,爱奇艺大数据平台已积累了海量数据,这…...

【C++篇】栈的层叠与队列的流动:在 STL 的韵律中探寻数据结构的优雅之舞
文章目录 C 栈与队列详解:基础与进阶应用前言第一章:栈的介绍与使用1.1 栈的介绍1.2 栈的使用1.2.1 最小栈1.2.2 示例与输出 1.3 栈的模拟实现 第二章:队列的介绍与使用2.1 队列的介绍2.2 队列的使用2.2.1 示例与输出 2.3 队列的模拟实现2.3.…...

使用 Flask 实现简单的登录注册功能
目录 1. 引言 2. 环境准备 3. 数据库设置 4. Flask 应用基本配置 5. 实现用户注册 6. 实现用户登录 7. 路由配置 8. 创建前端页面 9. 结论 1. 引言 在这篇文章中,我们将使用 Flask 框架创建一个简单的登录和注册系统。Flask 是一个轻量级的 Python Web 框架…...

计算机毕业设计Python+大模型微博情感分析 微博舆情预测 微博爬虫 微博大数据 舆情分析系统 大数据毕业设计 NLP文本分类 机器学习 深度学习 AI
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 《Python大模型微博情感分析…...

CTF--Misc题型小结
(萌新笔记,多多关照,不足之处请及时提出。) 不定时更新~ 目录 密码学相关 文件类型判断 file命令 文件头类型 strings读取 隐写术 尺寸修改 文件头等缺失 EXIF隐写 thumbnail 隐写 文件分离&提取 binwalk foremo…...

深度学习系列——RNN/LSTM/GRU,seq2seq/attention机制
1、RNN/LSTM/GRU可参考: https://zhuanlan.zhihu.com/p/636756912 (1)对于这里面RNN的表示中,使用了输入x和h的拼接描述,其他公式中也是如此 (2)各符号图含义如下 2、关于RNN细节,…...

通过call指令来学习指令摘要表的细节
E8 cw cw 表示E8后面跟随2 字节 (什么数不知道) rel16 指在与指令同一代码段内的相对地址偏移 D ,指向Instruction Operand Encoding 表中的D列, 他告诉我们 操作数1 是一个0FFSET N.S. 在64位模式下,某些指令需要使用“地址覆盖前缀”(address over…...

10分钟使用Strapi(无头CMS)生成基于Node.js的API接口,告别繁琐开发,保姆级教程,持续更新中。
一、什么是Strapi? Strapi 是一个开源的无头(headless) CMS,开发者可以自由选择他们喜欢的开发工具和框架,内容编辑人员使用自有的应用程序来管理和分发他们的内容。得益于插件系统,Strapi 是一个灵活的 C…...
创建插件 DLL 项目
Step 1: 创建插件 DLL 项目 在 Visual Studio 中创建一个新的 DLL 项目,并添加以下文件和代码。 头文件:CShapeBase.h cpp 复制代码 #pragma once #include <afxwin.h> // MFC 必需头文件 #include <string> #include <vector> #i…...

OpenCV双目相机外参标定C++
基于OpenCV库实现双目测量系统外参标定过程。通过分析双目测量系统左右相机拍摄的棋盘格标定板图像,包括角点检测、立体标定、立体校正和畸变校正的步骤,获取左右相机的相对位置关系和姿态。 a.检测每张图像中的棋盘格角点,并进行亚像素级精…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...

tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...

mac:大模型系列测试
0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...

沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...