详解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 相关文章推荐
Python实现list反转实例汇总
Nov 11 Python
PyQt5每天必学之组合框
Apr 20 Python
python3读取csv和xlsx文件的实例
Jun 22 Python
详解python读取和输出到txt
Mar 29 Python
详解python编译器和解释器的区别
Jun 24 Python
Python列表对象实现原理详解
Jul 01 Python
Python面向对象编程基础实例分析
Jan 17 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
May 25 Python
python的flask框架难学吗
Jul 31 Python
Python利用命名空间解析XML文档
Aug 10 Python
python 实现朴素贝叶斯算法的示例
Sep 30 Python
Python  Asyncio模块实现的生产消费者模型的方法
Mar 01 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程序员工具
2008/05/26 PHP
php下通过伪造http头破解防盗链的代码
2010/07/03 PHP
MySQL 日期时间函数常用总结
2012/06/12 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
php去除二维数组的重复项方法
2015/11/03 PHP
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
2016/11/01 PHP
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
jquery-mobile表单的创建方法详解
2016/11/23 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
2016/12/09 Javascript
vue学习笔记之指令v-text && v-html && v-bind详解
2017/05/12 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
2017/05/27 Javascript
聊聊JS动画库 Velocity.js的使用
2018/03/13 Javascript
利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
2021/01/30 Javascript
vue-cli脚手架引入弹出层layer插件的几种方法
2019/06/24 Javascript
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
vue实现购物车的监听
2020/04/20 Javascript
实现vuex原理的示例
2020/10/21 Javascript
python实现批量修改图片格式和尺寸
2018/06/07 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
2019/07/01 Python
python 矢量数据转栅格数据代码实例
2019/09/30 Python
浅谈python锁与死锁问题
2020/08/14 Python
Python QT组件库qtwidgets的使用
2020/11/02 Python
Jupyter Notebook安装及使用方法解析
2020/11/12 Python
Python爬虫后获取重定向url的两种方法
2021/01/19 Python
css3高级选择器使用方法
2013/12/02 HTML / CSS
C#里面如何倒序排列一个数组的元素?
2013/06/21 面试题
Solaris操作系统的线程机制
2015/07/28 面试题
优秀毕业生事迹材料
2014/02/12 职场文书
企业后勤岗位职责
2014/02/28 职场文书
群众路线党员自我评议范文2014
2014/09/24 职场文书
聋哑人盗窃罪辩护词
2015/05/21 职场文书
详解Redis集群搭建的三种方式
2021/05/31 Redis