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

从上面的代码可以看出,变量num1num2都指向同一个整型对象(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中,类型转换是将一个类型的对象转换为另一种类型的对象。类型转换的目的是根据当前对象的值创建一个新对象,而不是改变对象本身的类型。

下面是一些常见的类型转换示例:

  1. 将整型转换为字符串型:
# 创建一个整型对象
num = 100# 将整型转换为字符串型
str_num = str(num)print(type(str_num))  # 输出:<class 'str'>

在上面的例子中,我们使用str()函数将整型对象num转换为字符串型对象str_num。通过type()函数可以查看str_num的类型,它是一个字符串型对象。

  1. 将字符串型转换为整型:
# 创建一个字符串对象
str_num = "200"# 将字符串型转换为整型
num = int(str_num)print(type(num))  # 输出:<class 'int'>

在上面的例子中,我们使用int()函数将字符串型对象str_num转换为整型对象num。通过type()函数可以查看num的类型,它是一个整型对象。

  1. 将浮点型转换为整型:
# 创建一个浮点型对象
float_num = 3.14# 将浮点型转换为整型
num = int(float_num)print(num)  # 输出:3

在上面的例子中,我们使用int()函数将浮点型对象float_num转换为整型对象num。由于整型对象只能表示整数,所以在类型转换时小数部分会被舍弃。

需要注意的是,在进行类型转换时要确保当前对象的值是符合目标类型的要求的,否则可能会导致错误。例如,将一个非数字字符串转换为整型时会引发ValueError异常。

综上所述,通过类型转换,我们可以根据需要将一个类型的对象转换为另一种类型的对象。类型转换不会改变对象本身的类型,而是根据对象的值创建一个新的对象。掌握类型转换对于在Python中进行数据处理和操作非常重要。

运算符(操作符)

  • 运算符可以对一个值或多个值进行运算或各种操作
  • 比如 + 、-、= 都属于运算符
  • 运算符的分类:
    1. 算术运算符
    2. 赋值运算符
    3. 比较运算符(关系运算符)
    4. 逻辑运算符
    5. 条件运算符(三元运算符)

接下来我们来详细介绍一下常见的运算符。

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

以上就是常见的运算符。在实际编程中,这些运算符可以帮助我们完成各种逻辑和计算任务。

总结

本文介绍了编程中的一些基础概念和语法,包括数据类型、类型检查、对象、变量和对象、类型转换以及运算符。下面对这些内容进行简要总结:

  1. 数据类型定义了数据的特性和操作。常见数据类型包括整数、浮点数、字符串、布尔值等。类型检查可以确定变量的数据类型。
  2. 对象是具有状态和行为的实体。变量是指向对象的引用,可以通过变量来访问和操作对象的属性和方法。
  3. 类型转换是将一个数据类型转换为另一个数据类型的过程。常见的转换包括整数与浮点数之间的转换、字符串和数字之间的转换等。
  4. 运算符是用于执行特定操作的符号。常见的运算符包括算术运算符、比较运算符、逻辑运算符等。

通过理解和掌握这些基础知识,可以更好地开始学习和编写代码。在编程过程中,要注意语法的正确性和数据类型的匹配,合理使用函数和对象来组织代码。同时,灵活运用运算符来实现各种计算和逻辑操作。

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

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

相关文章

【PowerQuery】PowerQuery导入JSON数据

Json数据是目前使用的最为频繁和广泛的一种数据交换格式,JSON的全称为JavaScript Object Notation。Json 主要用于在互联网的消息的数据交换信息传递,他的格式与XML有什么区别呢?为什么不用XML,用Json有啥好处呢?我们接下来讨论下Json相比XML的优势: XML传递的数据过多服…

git回退到某个提交

git是一个分布式版本控制软件&#xff0c;分布式版本库的做法使源代码的发布和交流都极为方便&#xff0c;因此有不少用户都在使用git。最近小编也正在学习git这款软件&#xff0c;发现要想熟练运用git&#xff0c;学会git中的一些命令是很重要的&#xff0c;如果我们要回滚到某…

手写RPC框架--2.介绍Zookeeper

RPC框架-Gitee代码(麻烦点个Starred, 支持一下吧) RPC框架-GitHub代码(麻烦点个Starred, 支持一下吧) 该项目的RPC通信将采用NettyZookeeper&#xff0c;所以会在前两章介绍使用方法 介绍Zookeeper Zookeepera.概述1) 数据模型2) Watcher机制 b.安装和基本操作1) Java操作zooke…

16字节协议的串口通信

1.协议要求 协议为帧传输&#xff0c;一共16字节。主要是2字节的固定帧头 EB 90&#xff0c;2字节的帧计数(用来计数发出的帧),10字节的数据和2字节的校验位 帧头&#xff1a;2字节&#xff0c;固定值 8’HEB、8’H90 帧计数&#xff1a;2字节&#xff0c;用来说明发出去帧是…

Netty服务端启动的整体流程-基于源码4.1.96Final分析

Netty采用的是主从Reactor多线程的模型&#xff0c;参考Scalable IO in Java&#xff0c;但netty的subReactor为一个组 一、从FileServer服务器示例入手 public final class FileServer {static final boolean SSL System.getProperty("ssl") ! null;// Use the …

【笔记】软件测试的艺术

软件测试的心理学和经济学 测试是为发现错误而执行程序的过程&#xff0c;所以它是一个破坏性的过程&#xff0c;测试是一个“施虐”的过程。 软件测试的10大原则 1、测试用例需要对预期输出的结果有明确的定义 做这件事的前提是能够提前知晓需求和效果图&#xff0c;如果不…

ChatGPT是否可以协助人们提高公共演讲和表达能力?

ChatGPT作为一种自然语言处理的AI技术&#xff0c;具有潜在的能力协助人们提高公共演讲和表达能力。公共演讲和表达是重要的沟通技能&#xff0c;对于职业和个人发展都具有关键性的作用。本文将探讨ChatGPT如何在这方面发挥作用&#xff0c;包括以下几个方面&#xff1a; 1. *…

Linux 操作系统实战视频课 - GPIO 基础介绍

文章目录 一、GPIO 概念说明二、视频讲解沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将讲解 GPIO 。 一、GPIO 概念说明 ARM 平台中的 GPIO(通用输入/输出)是用于与外部设备进行数字输入和输出通信的重要硬件接口。ARM 平台的 GPIO 特性可以根据具体的芯…

C++11新特性① | C++11 常用关键字实战详解

目录 1、引言 2、C11 新增关键字详解 2.1、auto 2.2、override 2.3、final 2.4、nullptr 2.5、使用delete阻止拷贝类对象 2.6、decltype 2.7、noexcept 2.8、constexpr 2.9、static_assert VC常用功能开发汇总&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xf…

LeetCode 剑指 Offer 10- I. 斐波那契数列

LeetCode 剑指 Offer 10- I. 斐波那契数列 题目描述 写一个函数&#xff0c;输入 n &#xff0c;求斐波那契&#xff08;Fibonacci&#xff09;数列的第 n 项&#xff08;即 F(N)&#xff09;。斐波那契数列的定义如下&#xff1a; F(0) 0, F(1) 1 F(N) F(N - 1) F(N - …

Unity项目包体优化经验方法论(Android平台)

前言 本篇文章主要讲解对于Unity Android平台也就是APK包体的优化经验&#xff0c;使用哪些工具能够更加便利的定位资源重灾区。本篇讲解的方法中对于Unity资源使用的AssetBundle的方式&#xff0c;如果使用addressable或其他资源管理方式&#xff0c;我还不是很清楚是否适用&…

使用pyenv安装python缓慢或无法安装

使用pyenv安装python缓慢或无法安装 这一定程度上和网络情况有关&#xff0c;下面提供几个常见方法&#xff1a; 关闭 VPN 后重新安装使用管理员权限打开命令窗口后安装如下 手动安装 pyenv 在执行 pyenv install --- 命令的时候&#xff0c;会连接远程库&#xff0c;将要安…

matlab使用教程(28)—微分方程(ODE)求解常见问题

1.非负 ODE 解 本博客说明如何将 ODE 解约束为非负解。施加非负约束不一定总是可有可无&#xff0c;在某些情况下&#xff0c;由于方程的物理解释或解性质的原因&#xff0c;可能有必要施加非负约束。仅在必要时对解施加此约束&#xff0c;例如不这样做积分就会失败或者解将不…

springboot项目中application.properties无法变成小树叶问题解决

1.检查我们的resources目录的状态&#xff0c;看看是不是处在普通文件夹的状态&#xff0c;如果是的话&#xff0c;我们需要重新mark一下 右键点击文件夹&#xff0c;选择mark directory as → resources root 此时我们发现配置文件变成了小树叶 2.如果执行了上述方法还是不行…

Golang web 项目中实现自定义 recovery 中间件

为什么需要实现自定义 recovery 中间件&#xff1f; 在 Golang 的 Web 项目中&#xff0c;自定义 recovery 中间件是一种常见的做法&#xff0c;用于捕获并处理应用程序的运行时错误&#xff0c;以避免整个应用程序崩溃并返回对应格式的响应数据。 很多三方 web 框架&#xf…

智能手机收入和出货量双双下滑,造车成本不断增长,小米集团仍面临风险

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 华尔街分析师对小米集团第二季度的业绩预测 在8月29日小米集团&#xff08;01810&#xff09;公布其2023年第二季度财报之前&#xff0c;华尔街分析师曾预测该公司第二季度的业绩将超出2023年第一季度的业绩。 根据S&P …

uniapp点击事件在小程序中无法传参

这个问题很是神奇&#xff0c;第一次遇到。在h5中&#xff0c;点击事件可以正常传参&#xff0c;打包小程序后确失效了。 修改&#xff1a;for循环中的key&#xff0c;使用 index就好了

计算机竞赛 基于深度学习的人脸表情识别

文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的人脸表情识别 该项目较…

LeetCode:1143. 最长公共子序列 - Python

1143. 最长公共子序列 问题描述&#xff1a; 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对…

Web前端自动化测试Cypress实践总结

本文主要首先主要介绍了什么是自动化测试&#xff0c;接着对常用的自动化测试框架进行了对比分析&#xff0c;最后&#xff0c;介绍了如果将自动化测试框架Cypress运用在项目中。 一、自动化测试概述 为了保障软件质量&#xff0c;并减少重复性的测试工作&#xff0c;自动化测…