Python(二)---数据类型与变量、以及运算符

文章目录

  • 前言
  • 1.Python程序的构成
    • 1.1.代码的组织和缩进
    • 1.2.使用\行连接符
  • 2.对象和引用、标识符规则
    • 2.1.对象
    • 2.2.引用
    • 2.3.标识符规则
  • 3.变量和简单赋值语句
    • 3.1.变量的声明和赋值
    • 3.2.删除变量和垃圾回收机制
    • 3.3.常量
    • 3.4.链式赋值
    • 3.5.系列解包赋值
  • 4.最基本内置数据类型
    • 4.1.数字和基本运算符
    • 4.2.整数
      • 4.2.1.三种进制
      • 4.2.2.使用int()实现类型转换:
      • 4.2.3.自动转型:
      • 4.2.4.整数可以任意大
    • 4.3.浮点数(float)
    • 4.4.类型转换和四舍五入
    • 4.5.增强型赋值运算符
    • 4.6.时间的表示
    • 4.7.布尔值
  • 5.运算符
    • 5.1.逻辑运算符
    • 5.2比较运算符
    • 5.3.位运算
    • 5.4.加法操作补充
    • 5.5.乘法操作补充
    • 5.6.增强赋值运算符(补充)
    • 5.7.同一运算符
    • 5.8.整数缓存问题
    • 5.9.运算符优先级问题


前言

上一篇我们了解到了Python的特性,那么下面我们开始正式学习Python语言


1.Python程序的构成

  1. Python程序由模块组成。一个模块对应python源文件,一般后缀名是:.py
  2. 模块由语句组成。运行Python程序时,按照模块中语句的顺序依次执行
  3. 语句是Python程序的构造单元,用于创建对象、变量赋值、调用函数、控制语句等

1.1.代码的组织和缩进

很多编程语言通过字符(例如:花括号{})、关键字(例如:
begain/end)来划分代码块。同时,在配合代码的缩进增加可读性。
“龟叔”设计Python语言时,直接通过缩进来组织代码块。“缩进”成
为了Python语法强制的规定。
缩进时,几个空格都是允许的,但是数目必须统一。通常采用“四个
空格”表示一个缩进。

同时,也要避免将“tab制表符”或者tab与空格混合的缩进风格。目
前,常用的编辑器一般设置成:tab制表符就是4个空格

1.2.使用\行连接符

一行程序长度是没有限制的,但是为了可读性更强,通常将一行比
较长的程序分为多行。这是,我们可以使用\行连接符,把它放在行
结束的地方。Python解释器仍然将它们解释为同一行。

'''
使用\行连接符
'''
a='abcdefgh\
ijkl\
mn'
print(a)

2.对象和引用、标识符规则

2.1.对象

在这里插入图片描述
一定要记住在Python中一切皆是对象
每个对象由:标识(identity)、类型(type)、value(值)组成

1.标识用于唯一标识对象,通常对应于对象在计算机内存中的地址。使用内置函数id(obj)可返回对象obj的标识。
2.类型用于表示对象存储的“数据”的类型。类型可以限制对象的取值范围以及可执行的操作。
可以使用type(obj)获得对象的所属类型。
3.值表示对象所存储的数据的信息。使用print(obj)可以直接打印出值

对象的本质就是:
一个内存块,拥有特定的值,支持特定类型的相关操作

'''
对象:三大属性 id type value
'''
a=100
print(id(a))
print(type(a))
print(a)

b='I love you'
print(id(b))
print(type(b))
print(b)

在这里插入图片描述
内存示意图

在这里插入图片描述
Python中的内存分布,跟Java的内存分布有点不同,大家学习的时候要注意区分。

2.2.引用

在Python中,变量也称为:对象的引用(reference)。变量存储的就是对象的地址。
变量通过地址引用了“对象”
变量位于:栈内存(压栈出栈等细节,后续再介绍)。
对象位于:堆内存。

Python是动态类型语言
变量不需要显式声明类型。根据变量引用的对象,Python解释器自动确定数据类型

2.3.标识符规则

基本用法
标识符规则:用于变量、函数、类、模块等的名称。标识符有如下
特定的规则:
1 区分大小写。如: sxt 和 SXT 是不同的
2 第一个字符必须是字母、下划线。其后的字符是:字母、数字、下划线
3 不能使用关键字。比如: if 、 or 、 while 等
以双下划线开头和结尾的名称通常有特殊含义,尽量避免这种写法。比如: init 是类的构造函数

【操作】使用Python帮助系统查看关键字
在控制台中先输入help()
在输入keywords
在这里插入图片描述
Python标识符命名规则
开发中,我们通常约定俗称遵守如下规则:
在这里插入图片描述


3.变量和简单赋值语句

3.1.变量的声明和赋值

变量的声明和赋值:用于将一个变量绑定到一个对象上,格式:
变量名 = 表达式
最简单的表达式就是字面量。比如: a = 123 。运行过程中,解释器先运行右边的表达式,生成一个代表表达式运算结果的对象;然后,将这个对象地址赋值给左边的变量
这是我们遇到的第一个错误
在这里插入图片描述变量 a 在被使用前未做赋值,因此报错: ’a’ is not defined

3.2.删除变量和垃圾回收机制

可以通过del语句删除不再使用的变量。
如果对象没有变量引用,就会被垃圾回收器回收,清空内存空间

a=123
print(a)
del a
print(a)

在这里插入图片描述

3.3.常量

在这里插入图片描述
在这里插入图片描述
Python是一个动态的,解释性的语言,不支持常量,即没有语法规则限制改变一个常量的值。我们只能约定常量的命名规则,以及在程序的逻辑上不对常量的值作出修改。

MAX=100
print(MAX)
MAX=100000
print(MAX)
MAX="我最棒"
print(MAX)

在这里插入图片描述

3.4.链式赋值

链式赋值用于同一个对象赋值给多个变量

x=y=123
print(x,y)

在这里插入图片描述

3.5.系列解包赋值

系列数据赋值给对应相同个数的变量(个数必须保持一致)

a,b=10,20
print(a,b)
a,b=b,a     #交换两个值
print(a,b)

在这里插入图片描述


4.最基本内置数据类型

在这里插入图片描述
python中变量没有类型,但是对象都有类型,python中最基本的内
置数据类型:

  1. 整型 int
    整数, 2345 , 10 , 50
  2. 浮点型 float
    小数, 3.14 或者科学计数法 314e-2
  3. 布尔型 bool
    表示真假,仅包含: True 、 False
  4. 字符串型 str
    由字符组成的序列。 “abc” , ‘sxt’ , ‘I love you’

4.1.数字和基本运算符

Python支持整数(如: 50 , 520 )和浮点数(如: 3.14 , 10.0 , 1.23e2 ),我们可以对数字做如下运算。

在这里插入图片描述

a=7
b=3
print(a+b)
print(a-b)
print(a*b)
print(a/b)
print(a//b)
print(a**b)
print(a%b)

如果除数为0

print(3/0)

在这里插入图片描述
使用 divmod() 函数同时得到商和余数:

# divmod(被除数,除数)  --> (商,余数)
print(divmod(a, b))

4.2.整数

4.2.1.三种进制

Python中,除了十进制,还有其他三种进制:
0b 或 0B ,二进制 0 1
0o 或 0O ,八进制 0 1 2 3 4 5 6 7
0x 或 0X ,十六进制0 1 2 3 4 5 6 7 8 9 a b c d e
在这里插入图片描述
上述操作要在控制台进行操作。
当然十进制也可以转化为二进制、八进制或者16进制

a=125
print(bin(a))
print(hex(a))
print(oct(a))

在这里插入图片描述

4.2.2.使用int()实现类型转换:

  1. 浮点数直接舍去小数部分。如: int(9.9) 结果是: 9
  2. 布尔值 True 转为 1 , False 转为 0 。 如: int(True) 结果是 1
  3. 字符串符合整数格式(浮点数格式不行)则直接转成对应整数,否则报错
print(int(True))
print(int(3.55))
print(int('123'))

在这里插入图片描述

4.2.3.自动转型:

整数和浮点数混合运算时,表达式结果自动转型成浮点数。比如:
2+8.0 的结果是 10.0

4.2.4.整数可以任意大

Python2中, int 是32位,可以存储从 -2147483648 到 2147483647 的整数
(约±21亿)。Long类型是64位,可以存储:-263–263-1之间的
数值。
Python3中, int 可以存储任意大小的整数, long 被取消。我们甚至
可以存储下面的值:

googol = 10**100
print(googol)

在这里插入图片描述

Googol也是Google最初的名字,这也是Google最初的含义。

4.3.浮点数(float)

浮点数用科学计数法表示。比如: 3.14 ,表示成: 314E-2 或者 314e-2
这些数字在内存中也是按照科学计数法存储。

4.4.类型转换和四舍五入

1 类似于 int() ,我们也可以使用 float() 将其他类型转化成浮点数。
2 整数和浮点数混合运算时,表达式结果自动转型成浮点数。比如: 2+8.0 的结果是 10.0
3.round(value) 可以返回四舍五入的值。但不会改变原有值,而是产生新的值

a=3.56
b=round(a)
print(a)
print(b)

在这里插入图片描述

4.5.增强型赋值运算符

运算符 + 、 - 、 * , / 、 // 、 ** 和 % 和赋值符 = 结合可以构成“增强型
赋值运算符”。
在这里插入图片描述

x=7
y=4
y*=x+3   # y=y*(x+3)
print(y)

在这里插入图片描述

  • “+=”中间不能加空格!
  • 结合的是右侧整个表达式:
    y*= x+2 相当于: y= y*(x+2) 而不是:y = y*x+2

4.6.时间的表示

计算机中时间的表示是从“1970年1月1日 00:00:00”开始,以毫秒
(1/1000秒)进行计算。我们也把1970年这个时刻称为“unix时间
点”。
这样,我们就把时间全部用数字来表示了。

在这里插入图片描述
python中可以通过time.time() 获得当前时刻,返回的值是以秒为单
位,带微秒(1/1000毫秒)精度的浮点值。例如:
1635063628.5632517

import time
b = int(time.time())
totalMinutes = b//60
totalHours = totalMinutes//60
totalDays = totalHours//24
totalYears = totalDays//365 #忽略闰年情况
print(totalYears)

在这里插入图片描述

4.7.布尔值

Python2中没有布尔值,直接用数字 0 表示 False , 用数字 1 表示
True 。
Python3中,把 True 和 False 定义成了关键字,但他们的本质还是 1 和0 ,甚至可以和数字相加。

在Python语言底层,会将布尔值True看作1,将布尔值False看
作0,尽管从表面上看,True和1、False和0是完全不同的两个
值,但实际上,它们是相同的。
在Python语言中有一些特殊的布尔类型值为False,例如
False、0、0.0、空值None、空序列对象(空列表、空元祖、空
集合、空字典、空字符串)、空range对象、空迭代对象。其他
情况,均为True

a=True
b=2
print(a+b)
print('空字符串的布尔类型的值:',bool(""))
#False
print('空列表布尔类型的值:',bool([]))
#False
print('None布尔类型的值:',bool(None))
#False
print('0布尔类型的值:',bool(0))
#False
print('字符串True和False转成布尔都是True:',bool("False")) #True

在这里插入图片描述


5.运算符

5.1.逻辑运算符

在这里插入图片描述

a = 10
b = 20
c = 30
print((a>b) and (c>b))
print((a>b) or (c > b))
print(not (a==b))

5.2比较运算符

所有比较运算符返回 1 表示真,返回 0 表示假。这分别与特殊变量
True 和 False 等价
在这里插入图片描述

5.3.位运算

在这里插入图片描述

5.4.加法操作补充

1 数字相加 3+2 结果是 5
2 字符串拼接 “3”+“2” 结果是 “32”
3 列表、元组等合并 [10,20,30]+[5,10,100] 结果是[10,20,30,5,10,100]

print(3+2)
print('3'+'2')
print([10,20,30]+[1,2,3])

5.5.乘法操作补充

1 数字相乘 3*2 结果是 6
2 字符串复制 “sxt”*3 结果是 ”sxtsxtsxt”
3 列表、元组等复制 [10,20,30]*3 结果是[10,20,30,10,20,30,10,20,30]

print(3 * 2)
print('xxhh' * 4)
print([10,20,30] * 4)

5.6.增强赋值运算符(补充)

复合赋值可以让程序更加精炼,提高效率
在这里插入图片描述

5.7.同一运算符

在这里插入图片描述
is 与 == 区别:
is 用于判断两个变量引用对象是否为同一个,既比较对象的地址

== 用于判断引用变量引用对象的值是否相等,默认调用对象的
_ eq _() 方法。

5.8.整数缓存问题

  1. 命令行模式下,Python仅仅对比较小的整数对象进行缓存(范
    围为[-5, 256])缓存起来 C语言底层用数组实现,连续分配空间,便于查找 ,而并非是所有整数对象。
  2. 文件模式下,所有数字都会被缓存,范围是:[-无穷大,+无穷大])

缓存实现:[-5,256]仍然 底层用数组实现 ;不在[-5,256]出现的数,缓存到 链表中,不连续分配空间 。

文本行中

a=100
b=100
print(a==b)
print(a is b)
a=1000
b=1000
print(a==b)
print(a is b)

在这里插入图片描述
控制台中
在这里插入图片描述

5.9.运算符优先级问题

如下优先级,从高到低。
在这里插入图片描述


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

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

相关文章

rclone 上传资料到 onedrive 遇到限速问题解决

原因分析 可能和脚本参数设置有关系,我的参数是: rclone copy "F:\阿里云盘\6666\局域网" "od:影视" --ignore-existing -u -v -P --transfers20 --ignore-errors --buffer-size128M --check-first --checkers10 --drive-acknowledge-abuse差不多8G大小的…

C#——值类型和引用类型的区别详情

值类型和引用类型的区别 值类型 值类型: 常用的基本数据类型都是值类型:bool 、char、int、 double、 float、long 、 byte 、ulong、uint、枚举类型、 结构体类型等特点: 在赋值的过程当中,把值的本身赋值给另一个变量,再修改…

关于STM32上用HID HOST调鼠标数据的解析

一、前言 关于这章主要是基于我前面的那篇文章 链接: 关于怎么用Cubemx生成的USBHID设备实现读取一体的鼠标键盘设备(改进版) https://blog.csdn.net/qq_29187987/article/details/139535648?spm1001.2014.3001.5501 引用的文章的简介 引用的这篇文…

FFmpeg编解码的那些事(3)-视频硬解码的基础知识

目录 前言: 1.iso/os x平台 2.windows平台 3.linux平台 4.Tips: 5.结论: 前言: 视频硬解码的过程就是把视频提取成图片变显示出来,就是播放器播放视频的过程,就可以理解为解码的过程。 在不同的系统…

微信同声传译小程序插件使用教程

微信同声传译小程序插件 —— 机器翻译、智能语音 案例可搜索“一起学英语鸭”小程序查看, 实现效果如下图: 插件功能 语音转文字 语音合成 文本翻译 step 1:添加插件 在使用前,需要登录官网 设置 → 第三方服务 → 添加插件…

UniApp+Vue3使用Vant-微信小程序组件

第一步:打开创建好的UniappVue3的项目 第二步:下载Vant-Weapp npm i vant/weapp -S --production 第三步:修改目录名称 wxcomponents 必须是wxcomponents 第四步:将下载好的vant中的dist目录剪切到当前wxcomponents目录下 第五…

(超详细)基于动态顺序表实现简单的通讯录项目

前言: 我们在上一章节用c语言实现了线性表中的的动态顺序表,那么顺序表就只是顺序表吗?当然不是,使用顺序表结构可以实现很多项目,许多项目的数据结构都会用到顺序表,本章节我们就要使用顺序表实现一个简易…

数值分析笔记(二)函数插值

函数插值 已知函数 f ( x ) f(x) f(x)在区间[a,b]上n1个互异节点 { x i } i 0 n \{{x_i}\}_{i0}^{n} {xi​}i0n​处的函数值 { y i } i 0 n \{{y_i}\}_{i0}^{n} {yi​}i0n​,若函数集合 Φ \Phi Φ中函数 ϕ ( x ) \phi(x) ϕ(x)满足条件 ϕ ( x i ) y i ( i …

论文阅读:RAM++ | Open-Set Image Tagging with Multi-Grained Text Supervision

发表时间:2023年11月16 论文地址:https://arxiv.org/pdf/2310.15200 项目地址:https://github.com/xinyu1205/recognize-anything Recognize Anything Plus Model(RAM),这是一种有效利用多粒度文本监督的开…

课时154:项目发布_手工发布_手工发布

1.2.3 手工发布 学习目标 这一节,我们从 基础知识、简单实践、小结 三个方面来学习 基础知识 简介 为了合理的演示生产环境的项目代码发布,同时又兼顾实际实验环境的资源,我们这里将 B主机和C主机 用一台VM主机来实现,A主机单…

电路笔记 :LM3481MM/NOPB升压模块,升压电路原理

LM3481MM/NOPB LM3481MM/NOPB 是德州仪器(Texas Instruments)的一款广泛应用的DC-DC控制器,常用于电源管理应用,特别是在需要升压(boost)、反激(flyback)、SEPIC或反向配置的场合。…

【Ardiuno】实验使用OPT语音模块播放语音(图文)

当我们需要在程序中播放语音内容时,就需要使用到语音模块,今天我们就来实验一下使用OPT语音模块来方法语音。 const int voicePin 5; const int voiceBusyPin 18; const int testLEDPin 2;unsigned long pmillis 0;int busyVal 0; …

Go源码--sync库(3):sync.Pool(2)

回收 回收其实就是将 pool.local 置为空 可以让垃圾回收器回收 我们来看下 源码 func init() {// 将 poolCleanup 注册到 gc开始前的准备工作处理器中在 STW时执行runtime_registerPoolCleanup(poolCleanup) }这里注册了清理程序到GC前准备工作 也就是发生GC前需要执行这段代…

【每日随笔】摩托车控车 ① ( 油离配合 | 落脚油离配合 - 不给油 | 落脚油离配合 - 给油 | 正式油离配合 | 骑行姿态注意事项 )

文章目录 一、找 " 离合结合点 "二、落脚油离配合 ( 不给油 )1、该科目练习目的2、起步姿态3、开始练习 三、落脚油离配合 ( 给油 )1、练习目的2、熟悉油门转速3、练习步骤 四、正式油离配合1、练习目的2、练习步骤3、练习效果 五、骑行姿态注意事项1、基本骑行姿态2…

正能量情感语录热门素材文案去哪里找?文案素材网站分享

正能量情感语录热门素材文案去哪里找?文案素材网站分享 想为你的作品注入正能量和情感温度?不知如何获取热门情感语录素材?别担心,今天我将为大家推荐一些海外知名的素材网站,让你轻松找到受欢迎的文案素材&#xff…

对不起了,QQ和微信,我选择用它!

哈喽,各位小伙伴们好,我是给大家带来各类黑科技与前沿资讯的小武。 每当我们需要在电脑和手机之间传输文件、在学习和工作时与朋友/同事传输文件,相信大多都会使用微信或者QQ。 但是在分享一些软件apk等安装包时,微信和QQ会将其…

.gitignore文件忽略的内容不生效问题解决

文章目录 ①:现象②:原因③:解决 ①:现象 在已经提交过的git管理的项目中, 新增加一个.gitignore文件,文件内忽略内容不生效或者修改.gitignore文件之后,文件内新增的忽略内容不生效 ②&#…

ImageNet-1k 测试集 两大坑

1、官方网站提交test set标签时,千万不能提交zip文件,即便明文说可以 https://image-net.org/challenges/LSVRC/eval_server.php 不然就会浪费一次提交机会,直接提交submission.txt就可以,注意每排5个预测结果,用于计…

第 2 章:Spring Framework 中的 IoC 容器

控制反转(Inversion of Control,IoC)与 面向切面编程(Aspect Oriented Programming,AOP)是 Spring Framework 中最重要的两个概念,本章会着重介绍前者,内容包括 IoC 容器以及容器中 …

【UML用户指南】-16-对高级结构建模-构件

目录 1、概念 2、构件与接口 3、可替换性 4、组织构件 5、端口 6、内部结构 6.1、部件 6.2、连接件 7、常用建模技术 7.1、对结构类建模 7.2、对API建模 构件是系统中逻辑的并且可替换的部分,它遵循并提供对一组接口的实现。好的构件用定义良好的接口来定…