Python基础知识详解:数据类型、对象结构、运算符完整分析
文章目录
- python基础知识
- 数据类型
- 类型检查
- 对象(object)
- 对象的结构
- 变量和对象
- 类型转换
- 运算符(操作符)
- 1. 算术运算符
- 2. 赋值运算符
- 3. 比较运算符(关系运算符)
- 4. 逻辑运算符
- 5. 条件运算符(三元运算符)
- 总结
python基础知识
数据类型
Python提供了丰富的数据类型,让我们可以灵活地处理各种数据。
首先是数值类型。数值类型包括整型、浮点型和复数。
整型(int)用于表示整数,例如年龄、数量等。我们可以直接将一个整数赋值给一个变量,如下所示:
age = 18
浮点型(float)用于表示带有小数点的数,例如长度、重量等。同样,我们可以将一个浮点数赋值给一个变量,如下所示:
height = 1.75
布尔值(bool)用于表示逻辑真(True)或逻辑假(False)。它通常用于条件判断和循环控制。下面是一个示例:
is_student = True
接下来是字符串类型(str)。字符串用于表示由字符组成的文本,比如姓名、地址等。我们可以使用单引号或双引号将文本括起来,如下所示:
name = "Alice"
address = '123 Main Street'
此外,还有一个特殊的数据类型是空值(NoneType)。空值表示一个没有任何值的对象。我们可以将一个变量赋值为None来表示空值:
result = None
类型检查
当我们需要对变量进行类型检查时,可以使用type()函数。下面是一个例子:
age = 18
print(type(age)) # 输出:<class 'int'>height = 1.75
print(type(height)) # 输出:<class 'float'>is_student = True
print(type(is_student)) # 输出:<class 'bool'>name = "Alice"
print(type(name)) # 输出:<class 'str'>result = None
print(type(result)) # 输出:<class 'NoneType'>
通过调用type()函数,我们可以获取变量的实际数据类型,并进行相应的处理。
总结一下,Python提供了丰富的数据类型,包括整型、浮点型、布尔型和字符串型等。我们可以根据不同的需求选择合适的数据类型,同时使用类型检查功能来确保程序的正确性。
对象(object)
- Python是一门面向对象的语言
- 一切皆对象!
- 程序运行当中,所有的数据都是存储到内存当中然后再运行的!
- 对象就是内存中专门用来存储指定数据的一块区域
- 对象实际上就是一个容器,专门用来存储数据
- 像我们之前学习的数值、字符串、布尔值、None都是对象
对象的结构
当我们使用Python创建一个对象时,它会自动保存三种数据:标识、类型和值。每种数据的作用如下:
首先是标识(id):标识用来唯一标识一个对象,类似于人的身份证号码。每个对象都有一个独特的标识号。你可以使用内置函数id()来查看一个对象的标识。在CPython解释器中,这个标识就是对象在内存中的地址。一旦对象被创建,它的标识就不会改变。
# 创建一个整型对象,并查看它的标识
num = 10
print(id(num)) # 输出:140721888491424
接下来是类型(type):类型表示当前对象所属的类别,比如整型(int)、字符串(str)、浮点数(float)、布尔值(bool)等。类型决定了对象具备哪些功能和行为。你可以使用内置函数type()来查看一个对象的类型。需要注意的是,Python是一门强类型语言,创建后对象的类型不能被修改。
# 创建一个字符串对象,并查看它的类型
name = "Alice"
print(type(name)) # 输出:<class 'str'>
最后是值(value):值表示对象中具体存储的数据。对于某些对象,它们的值是可以被修改的;而对于其他一些对象,则是不可更改的。对象可以分为可变对象和不可变对象两类。可变对象的值可以改变,比如列表(list),而不可变对象的值不能改变,比如整型(int)、字符串(str)。
# 创建一个列表对象,并修改它的值
numbers = [1, 2, 3]
print(numbers) # 输出:[1, 2, 3]numbers.append(4)
print(numbers) # 输出:[1, 2, 3, 4]
通过保存这三种数据,Python中的对象能够灵活地存储和操作数据。了解对象的结构有助于我们更好地理解Python程序中的数据处理过程,并能更好地使用和管理对象。
变量和对象
在Python中,变量和对象是密不可分的。当我们创建一个对象时,实际上是在内存中开辟了一块空间来存储这个对象的值、类型和标识。当我们将一个对象赋值给一个变量时,变量中实际上保存的是这个对象的标识(内存地址),而不是对象本身。
看下面的例子:
# 创建一个整型对象
num1 = 10# 将 num1 赋值给 num2,两个变量此时指向同一个对象
num2 = num1# 修改 num1 的值,此时 num2 不受影响
num1 = 20print(num1) # 输出:20
print(num2) # 输出:10
从上面的代码可以看出,变量num1和num2都指向同一个整型对象(10)。当我们修改num1的值时,变量num2并没有受到任何影响,因为它们各自保存了独立的对象标识。
同时,变量和变量之间是相互独立的,修改一个变量并不会影响另一个变量。比如下面的代码:
# 创建两个整型对象
num1 = 10
num2 = 20# 将 num1 和 num2 相加并赋值给 sum_num
sum_num = num1 + num2# 修改 num1 的值,不会影响 sum_num
num1 = 30print(sum_num) # 输出:30
从上面的代码可以看出,虽然我们修改了num1的值,但是变量sum_num中保存的对象的值并没有受到任何影响。这是因为变量和变量之间是相互独立的,它们各自保存着独立的对象标识。
综上所述,变量和对象之间的关系是一种别名关系,变量并不直接存储对象的值,而是指向对象的标识。当我们使用变量时,实际上是在通过对象标识查找对象。理解变量和对象之间的关系对于掌握Python编程非常重要。
类型转换
在Python中,类型转换是将一个类型的对象转换为另一种类型的对象。类型转换的目的是根据当前对象的值创建一个新对象,而不是改变对象本身的类型。
下面是一些常见的类型转换示例:
- 将整型转换为字符串型:
# 创建一个整型对象
num = 100# 将整型转换为字符串型
str_num = str(num)print(type(str_num)) # 输出:<class 'str'>
在上面的例子中,我们使用str()函数将整型对象num转换为字符串型对象str_num。通过type()函数可以查看str_num的类型,它是一个字符串型对象。
- 将字符串型转换为整型:
# 创建一个字符串对象
str_num = "200"# 将字符串型转换为整型
num = int(str_num)print(type(num)) # 输出:<class 'int'>
在上面的例子中,我们使用int()函数将字符串型对象str_num转换为整型对象num。通过type()函数可以查看num的类型,它是一个整型对象。
- 将浮点型转换为整型:
# 创建一个浮点型对象
float_num = 3.14# 将浮点型转换为整型
num = int(float_num)print(num) # 输出:3
在上面的例子中,我们使用int()函数将浮点型对象float_num转换为整型对象num。由于整型对象只能表示整数,所以在类型转换时小数部分会被舍弃。
需要注意的是,在进行类型转换时要确保当前对象的值是符合目标类型的要求的,否则可能会导致错误。例如,将一个非数字字符串转换为整型时会引发ValueError异常。
综上所述,通过类型转换,我们可以根据需要将一个类型的对象转换为另一种类型的对象。类型转换不会改变对象本身的类型,而是根据对象的值创建一个新的对象。掌握类型转换对于在Python中进行数据处理和操作非常重要。
运算符(操作符)
- 运算符可以对一个值或多个值进行运算或各种操作
- 比如 + 、-、= 都属于运算符
- 运算符的分类:
- 算术运算符
- 赋值运算符
- 比较运算符(关系运算符)
- 逻辑运算符
- 条件运算符(三元运算符)
接下来我们来详细介绍一下常见的运算符。
1. 算术运算符
- 加法运算符 (+):用于对两个值进行相加。
- 减法运算符 (-):用于从一个值中减去另一个值。
- 乘法运算符 (*):用于将两个值相乘。
- 除法运算符 (/):用于将一个值除以另一个值。
- 取余运算符 (%):用于取得两个数相除的余数。
- 整除运算符 (//):用于取得两个数相除的整数部分。
- 幂运算符 (**):用于将一个数的幂次方。
示例:
a = 10
b = 3print(a + b) # 输出:13
print(a - b) # 输出:7
print(a * b) # 输出:30
print(a / b) # 输出:3.3333333333333335
print(a % b) # 输出:1
print(a // b) # 输出:3
print(a ** b) # 输出:1000
2. 赋值运算符
赋值运算符用于将值赋给变量。
- 等号 (=):将右侧的值赋给左侧的变量。
- 加等于 (+=):将右侧的值加到左侧的变量上,并将结果赋给左侧的变量。
- 减等于 (-=):将右侧的值从左侧的变量中减去,并将结果赋给左侧的变量。
- 乘等于 (*=):将左侧的变量乘以右侧的值,并将结果赋给左侧的变量。
- 除等于 (/=):将左侧的变量除以右侧的值,并将结果赋给左侧的变量。
- 取余等于 (%=):将左侧的变量取余右侧的值,并将结果赋给左侧的变量。
- 整除等于 (//=):将左侧的变量整除以右侧的值,并将结果赋给左侧的变量。
- 幂等于 (**=):将左侧的变量的值提升到右侧的幂次方,并将结果赋给左侧的变量。
示例:
a = 10
b = 3a += b # 等价于 a = a + b
print(a) # 输出:13a -= b # 等价于 a = a - b
print(a) # 输出:10a *= b # 等价于 a = a * b
print(a) # 输出:30a /= b # 等价于 a = a / b
print(a) # 输出:10.0a %= b # 等价于 a = a % b
print(a) # 输出:1.0a //= b # 等价于 a = a // b
print(a) # 输出:0.0a **= b # 等价于 a = a ** b
print(a) # 输出:0.0
3. 比较运算符(关系运算符)
比较运算符用于比较两个值之间的关系,返回布尔值 True 或 False。
- 等于 (==):检查两个值是否相等。
- 不等于 (!=):检查两个值是否不相等。
- 大于 (>):检查左侧的值是否大于右侧的值。
- 小于 (<):检查左侧的值是否小于右侧的值。
- 大于等于 (>=):检查左侧的值是否大于等于右侧的值。
- 小于等于 (<=):检查左侧的值是否小于等于右侧的值。
示例:
a = 10
b = 3print(a == b) # 输出:False
print(a != b) # 输出:True
print(a > b) # 输出:True
print(a < b) # 输出:False
print(a >= b) # 输出:True
print(a <= b) # 输出:False
4. 逻辑运算符
逻辑运算符用于组合条件表达式,并返回布尔值 True 或 False。
- 与运算符 (and):如果两个条件表达式都为 True,则返回 True。
- 或运算符 (or):如果至少一个条件表达式为 True,则返回 True。
- 非运算符 (not):将条件表达式的结果取反。
示例:
a = 10
b = 3
c = 5print(a > b and a > c) # 输出:True
print(a > b or a < c) # 输出:True
print(not(a > b)) # 输出:False
5. 条件运算符(三元运算符)
条件运算符用于根据条件选择不同的值。
- 语法:value1 if condition else value2
- 如果条件为 True,则返回 value1,否则返回 value2。
示例:
a = 10
b = 3max_value = a if a > b else b
print(max_value) # 输出:10
以上就是常见的运算符。在实际编程中,这些运算符可以帮助我们完成各种逻辑和计算任务。
总结
本文介绍了编程中的一些基础概念和语法,包括数据类型、类型检查、对象、变量和对象、类型转换以及运算符。下面对这些内容进行简要总结:
- 数据类型定义了数据的特性和操作。常见数据类型包括整数、浮点数、字符串、布尔值等。类型检查可以确定变量的数据类型。
- 对象是具有状态和行为的实体。变量是指向对象的引用,可以通过变量来访问和操作对象的属性和方法。
- 类型转换是将一个数据类型转换为另一个数据类型的过程。常见的转换包括整数与浮点数之间的转换、字符串和数字之间的转换等。
- 运算符是用于执行特定操作的符号。常见的运算符包括算术运算符、比较运算符、逻辑运算符等。
通过理解和掌握这些基础知识,可以更好地开始学习和编写代码。在编程过程中,要注意语法的正确性和数据类型的匹配,合理使用函数和对象来组织代码。同时,灵活运用运算符来实现各种计算和逻辑操作。
相关文章:
Python基础知识详解:数据类型、对象结构、运算符完整分析
文章目录 python基础知识数据类型类型检查对象(object)对象的结构变量和对象类型转换运算符(操作符)1. 算术运算符2. 赋值运算符3. 比较运算符(关系运算符)4. 逻辑运算符5. 条件运算符(三元运算符) 总结 py…...
基于Streamlit的应用如何通过streamlit-authenticator组件实现用户验证与隔离
Streamlit框架中默认是没有提供用户验证组件的,大家在基于streamlit快速实现web应用服务过程中,不可避免的需要配置该应用的访问范围和权限,即用户群体,一般的做法有两种,一种是通过用户密码验证机制,要求只…...
[虚幻引擎插件介绍] DTGlobalEvent 蓝图全局事件, Actor, UMG 相互回调,自由回调通知事件函数,支持自定义参数。
本插件可以在虚幻的蓝图 Actor, Obiect,UMG 里面指定绑定和执行消息,可带自定义参数。 参数支持 Bool,Byte,Int,Int64,Float,Name,String,Text,Ve…...
2023数学建模国赛选题建议及BC题思路
大家好呀,全国大学生数学建模竞赛今天下午开赛啦,在这里先带来初步的选题建议及思路。 目前团队正在写B题和C题完整论文,后续还会持续更新哈,以下只是比较简略的图文版讲解,团队目前正在写B、C题完整论文,…...
vue3:4、组合式API-setup选项
setup每次都要return,好麻烦。怎么解决? 使用 <script setup> 语法糖(底层帮你return了) 写法如下...
【C刷题训练营】第三讲(c语言入门训练)
前言: 大家好,我决定日后逐渐更新c刷题训练营的内容,或许能帮到入门c语言的初学者,如果文章有错误,非常欢迎你的指正! 💥🎈个人主页:Dream_Chaser~ 🎈&…...
简述视频智能分析EasyCVR视频汇聚平台如何通过“AI+视频融合”技术规避八大特殊作业风险
视频智能分析EasyCVR视频汇聚平台可以根据不同的场景需求,让平台在内网、专网、VPN、广域网、互联网等各种环境下进行音视频的采集、接入与多端分发。在视频能力上,视频云存储平台EasyCVR可实现视频实时直播、云端录像、视频云存储、视频存储磁盘阵列、录…...
2023年9月NPDP产品经理国际认证报名,找弘博创新
产品经理国际资格认证NPDP是新产品开发方面的认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会(PDMA)成立于1979年,是…...
【MySQL】MySQL的安装,登录,配置和相关命令
文章目录 前言一. 卸载不需要的环境二. 获取MySQL的yum源三. 安装MySQL和启动四. 尝试登录MySQL方法1:获取临时root密码方法2:没有密码方法3:配置文件 五. 简单配置结束语 前言 本篇文章是基于云服务器;Linux:Centos7…...
攻防世界-WEB-php_rce
打开靶机链接 搜村ThinkPhP V5存在远程命令执行的漏洞 构建payload /index.php?sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]system&vars[1][]ls 查询当前目录文件,没有发现flag。调整payload 得到flag文件,修…...
WRFDA资料同化实践技术
数值预报已经成为提升预报质量的重要手段,而模式初值质量是决定数值预报质量的重要环节。资料同化作为提高模式初值质量的有效方法,成为当前气象、海洋和大气环境和水文等诸多领域科研、业务预报中的关键科学方法。资料同化新方法的快速发展,…...
C++11新特性② | 左值、左值引用、右值与右值引用
目录 1、引言 2、值类别及相关概念 3、左值、右值 4、左值引用、右值引用 5、移动语义 5.1、为什么需要移动语义 5.2、移动语义定义 5.3、转移构造函数 5.4、转移赋值函数 6、标准库函数 std::move 7、完美转发 std::forward VC常用功能开发汇总(专栏文章…...
Python Opencv实践 - Harris角点检测
参考资料:https://blog.csdn.net/wsp_1138886114/article/details/90415190 import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/chinease_tower.jpg", cv.IMREAD_COLOR) plt.imshow(img[:,:,::-1])#…...
el-upload上传图片到七牛云或阿里云
(1)绑定上传地址,上传数据对象 <el-upload class"upload-demo" :action"uploadUrl" :data"uploadData":on-success"handleSuccess" :file-list"[]" :show-file-list"false"…...
Web jQuery—选择器、样式和效果
jQuery 选择器、样式和效果 代码下载 jQuery 介绍 JavaScript库:即 library,是一个封装好的特定的集合(方法和函数)。从封装一大堆函数的角度理解库,就是在这个库中,封装了很多预先定义好的函数在里面&a…...
Java和Kotlin的Field在继承中的不同表现
Kotlin是一个宣称与Java兼容性较好的语言,但在接触后发现一些技术还是有“概念上”的冲突,本文就记录下两者对象的Field(中文的说法有字段、域、属性、成员变量,下文若出现这些表达,指的都是这个东西)在继承…...
MySQL 子查询
文章目录 1.简介2.优势3.分类3.1 标量子查询3.2 行子查询3.3 列子查询IN 操作符ALL 操作符ANY/SOME 操作符 3.4 表子查询 4.关联子查询5.EXISTS 和 NOT EXISTS6.横向派生表7.附录参考文献 1.简介 子查询是另一个语句中的 SELECT 语句。 子查询也称为内查询(Inner …...
Ubuntu离线或在线安装CMake
首先下载适用于Ubuntu的CMake安装包,可以去官网下载,也可以通过下面的命令下载(需要联网): wget https://cmake.org/files/v3.22/cmake-3.22.1.tar.gz将下载的安装包进行解压: tar -xvzf cmake-3.22.1.ta…...
后端面试话术集锦第 十七 篇:MySQL面试话术
这是后端面试集锦第十七篇博文——MySQL面试话术❗❗❗ 1. 解释一下单列索引和联合索引 单列索引是指在表的某一列上创建索引。 联合索引是在多个列上联合创建索引。 单列索引可以出现在where条件的任何位置,而联合索引需要按照一定的顺序来写。在多条件查询的时候,联合索引…...
< 文件资源管理器 > 和 < 此电脑 > 有什么区别?
“文件资源管理器”和 “此电脑” 的区别 1. 文件和文件夹管理:2. 访问存储设备:3. 搜索功能:4. 视图和排序选项:5. 快速访问: 主要的区别1. 界面和用途:2. 显示内容:3. 导航: 在Win…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
