详解python变量与数据类型


Posted in Python onAugust 25, 2020

这篇文章我们学习 Python 变量与数据类型

变量

变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念,变量可以通过变量名访问。在 Python 中 变量命名规定,必须是大小写英文,数字和 下划线(_)的组合,并且不能用数字开头。

变量命名规则:

  • 变量名只能是字母,数字和下划线的任意组合
  • 变量名第一个字符不能是数字
  • 变量名区分大小写,大小写字母被认为是两个不同的字符
  • 特殊关键字不能命名为变量名

声明变量

Python 中的变量不需要声明,每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python 中,变量就是变量,它没有类型,我们所说的”类型”是变量所指的内存中对象的类型。

name = "neo"

上述代码声明了一个变量,变量名为:name, 变量 name 的值为”neo”。

变量赋值

在 Python 中,等号 = 是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量。

a = 123 # a 是整数
a = 'abc' # a 是字符串

这种变量本身类型不固定的语言称之为动态语言,与之对应的就是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如 Java 是静态语言,这样赋值就会报错:

多个变量赋值

Python 允许你同时为多个变量赋值。例如:

a = b = c = 1

以上实例,创建一个整型对象,值为 1,从后向前赋值,三个变量被赋予相同的数值。

您也可以为多个对象指定多个变量。例如:

a, b, c = 1, 2, "neo"

以上实例,两个整型对象 1 和 2 的分配给变量 a 和 b,字符串对象 “neo” 分配给变量 c。

常量

所谓常量就是不能变的变量,比如常用的数学常数 π 就是一个常量。在 Python 中,通常用全部大写的变量名表示常量:

BI = 3.14

但事实上 BI 仍然是个变量,Python 根本无法保证 BI 不会被改变,所以,用全部大写的变量名表示常量只是一个习惯上的用法,如果你一定要改,语法也不会报错。

数据类型

Python3 中有六个标准的数据类型:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Sets(集合)、Dictionary(字典)。

Python3 的六个标准数据类型中:

  • 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
  • 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

下面我们一一介绍这些数据类型的使用。

Number(数字)

Python3 支持 int、float、bool、complex(复数)。

数字类型是顾名思义是用来存储数值的,需要记住的是,有点和 Java 的字符串味道差不多,如果改变了数字数据类型的值,将重新分配内存空间。

Python 支持三种不同的数值类型:

  • 整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。
  • 浮点型(float) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)
  • 复数( (complex)) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

示例:

#!/usr/bin/python3
 
counter = 100     # 整型变量
miles  = 1000.0    # 浮点型变量
name  = "test"   # 字符串
 
print (counter)
print (miles)
print (name)

数字类型转换

  • int(x) 将x转换为一个整数。
  • float(x) 将x转换到一个浮点数。
  • complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
  • complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。 额外说明

和别的语言一样,数字类型支持各种常见的运算,不过 Python 的运算比别的大多数常见语言都更加丰富,此外,还有大量丰富的方法,提供更高效的开发。

数值运算示例:

print (5 + 4) # 加法  输出 9
print (4.3 - 2) # 减法  输出 2.3
print (3 * 7) # 乘法 输出 21
print (2 / 4) # 除法,得到一个浮点数  输出 0.5
print (2 // 4) # 除法,得到一个整数 输出 0
print (17 % 3) # 取余  输出 2
print (2 ** 5) # 乘方 输出 32

String(字符串)

创建字符串可以使用单引号、双引号、三单引号和三双引号,其中三引号可以多行定义字符串,Python 不支持单字符类型,单字符也在Python也是作为一个字符串使用。

我们定义一个 s='python'语句,它在计算机中的执行顺序是先在内存中创建一个字符串 Python ,在程序栈寄存器中创建一个变量 s,最后把 Python 的地址赋给s 。

再来看看字符串的一些常见操作:

s = '学习Python'
# 切片
s[0], s[-1], s[3:], s[::-1]	# '优', 'n', 'Python', 'nohtyP的雅优'
# 替换,还可以使用正则表达式替换
s.replace('Python', 'Java')	# '学习Java'
# 查找,find()、index()、rfind()、rindex()
s.find('P')			# 3, 返回第一次出现的子串的下标
s.find('h', 2)			# 6, 设定下标2开始查找
s.find('23333')			# -1, 查找不到返回-1
s.index('y')			# 4, 返回第一次出现的子串的下标
s.index('P')		# 不同与find(), 查找不到会抛出异常
# 转大小写, upper()、lower()、swapcase()、capitalize()、istitle()、isupper()、islower()
s.upper()			# '学习PYTHON'
s.swapcase()			# '学习pYTHON', 大小写互换
s.istitle()			# True
s.islower()			# False
# 去空格,strip()、lstrip()、rstrip()
# 格式化
s1 = '%s %s' % ('Windrivder', 21)	# 'Windrivder 21' 
s2 = '{}, {}'.format(21, 'Windridver')	# 推荐使用format格式化字符串
s3 = '{0}, {1}, {0}'.format('Windrivder', 21)
s4 = '{name}: {age}'.format(age=21, name='Windrivder')
# 连接与分割,使用 + 连接字符串,每次操作会重新计算、开辟、释放内存,效率很低,所以推荐使用join
l = ['2017', '03', '29', '22:00']
s5 = '-'.join(l)			# '2017-03-29-22:00'
s6 = s5.split('-')			# ['2017', '03', '29', '22:00']

以上是一些常见的操作。

另外还有一点需要注意的是字符串编码,所有的 Python 字符串都是 Unicode 字符串,当需要将文件保存到外设或进行网络传输时,就要进行编码转换,将字符转换为字节,以提高效率。

# encode 将字符转换为字节
str = '学习Python'   
print (str.encode())			# 默认编码是 UTF-8 输出:b'\xe5\xad\xa6\xe4\xb9\xa0Python'
print (str.encode('gbk'))   # 输出 b'\xd1\xa7\xcf\xb0Python'
# decode 将字节转换为字符
print (str.encode().decode('utf8'))  # 输出 '学习Python'
print (str.encode('gbk').decode('gbk'))       # 输出 '学习Python'

List(列表)

类似 Java List 集合接口

列表是写在方括号 [] 之间、用逗号分隔开的元素列表,列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套),列表中的元素是可以改变。

示例:

Weekday = ['Monday','Tuesday','Wednesday','Thursday','Friday']
print(Weekday[0])  # 输出 Monday

#list 搜索
print(Weekday.index("Wednesday"))

#list 增加元素
Weekday.append("new")
print(Weekday)

# list 删除
Weekday.remove("Thursday") 
print(Weekday)

Tuple(元组)

元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开,组中的元素类型也可以不相同。

示例:

letters = ('a','b','c','d','e','f','g')
print(letters[0]) # 输出 'a'
print(letters[0:3]) # 输出一组 ('a', 'b', 'c')

Sets(集合)

类似 Java Set 集合接口

集合(set)是一个无序不重复元素的序列,使用大括号 {} 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 {} ,因为 {} 是用来创建一个空字典。

集合不能被切片也不能被索引,除了做集合运算之外,集合元素可以被添加还有删除:

示例:

a_set = {1,2,3,4}
# 添加
a_set.add(5)
print(a_set) # 输出{1, 2, 3, 4, 5}
# 删除
a_set.discard(5)
print(a_set) # 输出{1, 2, 3, 4}

Dictionary(字典)

类似 Java Map 集合接口

字典是一种映射类型,它的元素是键值对,字典的关键字必须为不可变类型,且不能重复。创建空字典使用 {} 。

示例:

Logo_code = {
 'BIDU':'Baidu',
 'SINA':'Sina',
 'YOKU':'Youku'
 }
print(Logo_code)
# 输出{'BIDU': 'Baidu', 'YOKU': 'Youku', 'SINA': 'Sina'}
print (Logo_code['SINA'])    # 输出键为 'one' 的值
print (Logo_code.keys())  # 输出所有键
print (Logo_code.values()) # 输出所有值
print (len(Logo_code)) # 输出字段长度

总结

本节给大家介绍了 Python 变量 和六种标准的数据类型,给大家演示了变量的使用,以及六个六种标准的数据类型的常用操作。

示例代码:Python-100-days-day003

以上就是详解python变量与数据类型的详细内容,更多关于python变量与数据类型的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
pygame学习笔记(5):游戏精灵
Apr 15 Python
详解字典树Trie结构及其Python代码实现
Jun 03 Python
Python使用SocketServer模块编写基本服务器程序的教程
Jul 12 Python
Python获取文件所在目录和文件名的方法
Jan 12 Python
python 列表删除所有指定元素的方法
Apr 19 Python
python使用requests模块实现爬取电影天堂最新电影信息
Apr 03 Python
python如何把字符串类型list转换成list
Feb 18 Python
python如何对链表操作
Oct 10 Python
Python 操作SQLite数据库的示例
Oct 16 Python
python3访问字典里的值实例方法
Nov 18 Python
Python入门基础之数字字符串与列表
Feb 01 Python
用Python仅20行代码编写一个简单的端口扫描器
Apr 08 Python
python获取百度热榜链接的实例方法
Aug 25 #Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
Aug 24 #Python
python实现自动清理重复文件
Aug 24 #Python
anaconda3安装及jupyter环境配置全教程
Aug 24 #Python
Python+pyftpdlib实现局域网文件互传
Aug 24 #Python
实例代码讲解Python 线程池
Aug 24 #Python
详解python UDP 编程
Aug 24 #Python
You might like
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
2013/08/13 PHP
php的array数组和使用实例简明教程(容易理解)
2014/03/20 PHP
PHP版微信小店接口开发实例
2016/11/12 PHP
Jquery 1.42 checkbox 全选和反选代码
2010/03/27 Javascript
目前流行的JavaScript库的介绍及对比
2013/09/29 Javascript
nodejs 实现模拟form表单上传文件
2014/07/14 NodeJs
详解js闭包
2014/09/02 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
javascript动态添加checkbox复选框的方法
2015/12/23 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
AngularJs 终极购物车(实例讲解)
2017/11/08 Javascript
js canvas实现橡皮擦效果
2018/12/20 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
Bootstrap table 实现树形表格联动选中联动取消功能
2019/09/30 Javascript
使用React代码动态生成栅格布局的方法
2020/05/24 Javascript
小程序自动化测试的示例代码
2020/08/11 Javascript
vue组件实现移动端九宫格转盘抽奖
2020/10/16 Javascript
python基于Tkinter库实现简单文本编辑器实例
2015/05/05 Python
Python常用知识点汇总
2016/05/08 Python
python 统计代码行数简单实例
2017/05/04 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
Python实现的本地文件搜索功能示例【测试可用】
2018/05/30 Python
Python面向对象总结及类与正则表达式详解
2019/04/18 Python
Win10环境python3.7安装dlib模块趟过的坑
2019/08/01 Python
Python3操作读写CSV文件使用包过程解析
2020/04/10 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
美国儿童运动鞋和服装零售商:Kids Foot Locker
2017/08/05 全球购物
简历的自我评价
2014/02/03 职场文书
安全教育实施方案
2014/03/02 职场文书
餐厅采购员岗位职责
2014/03/06 职场文书
社区工作者演讲稿
2014/05/23 职场文书
小学班主任培训方案
2014/06/04 职场文书
学生抄袭作业的检讨书
2014/10/02 职场文书
将MySQL的表数据全量导入clichhouse库中
2022/03/21 MySQL