详解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实现给数组按片赋值的方法
Jul 28 Python
Python实现简单拆分PDF文件的方法
Jul 30 Python
Python实现字典依据value排序
Feb 24 Python
Python爬虫的两套解析方法和四种爬虫实现过程
Jul 20 Python
python3爬虫获取html内容及各属性值的方法
Dec 17 Python
python使用response.read()接收json数据的实例
Dec 19 Python
详解Python装饰器
Mar 25 Python
selenium2.0中常用的python函数汇总
Aug 05 Python
深入了解Python enumerate和zip
Jul 16 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
Oct 15 Python
pandas 实现将NaN转换为None
May 14 Python
Python安装使用Scrapy框架
Apr 12 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分页代码实例
2013/10/24 PHP
yii框架搜索分页modle写法
2016/12/19 PHP
PHP配置ZendOpcache插件加速
2019/02/14 PHP
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
jquery星级插件、支持页面中多次使用
2012/03/25 Javascript
根据经纬度计算地球上两点之间的距离js实现代码
2013/03/05 Javascript
可插入图片的TEXT文本框
2013/12/27 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
js格式化输入框内金额、银行卡号
2016/02/01 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
2017/10/14 jQuery
微信小程序WebSocket实现聊天对话功能
2018/07/06 Javascript
Vue父子组件双向绑定传值的实现方法
2018/07/31 Javascript
Vue源码解析之数组变异的实现
2018/12/04 Javascript
详解VUE里子组件如何获取父组件动态变化的值
2018/12/26 Javascript
详解VSCode配置启动Vue项目
2019/05/14 Javascript
javascript绘制简单钟表效果
2020/04/07 Javascript
浅谈vue中resetFields()使用注意事项
2020/08/12 Javascript
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
2018/01/09 Python
Python切片操作实例分析
2018/03/16 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
2018/06/26 Python
Python -m参数原理及使用方法解析
2020/08/21 Python
简单总结CSS3中视窗单位Viewport的常见用法
2016/02/04 HTML / CSS
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
高三英语教学反思
2014/01/13 职场文书
初中学生评语大全
2014/04/24 职场文书
信访工作经验交流材料
2014/05/23 职场文书
小学中队长竞选稿
2015/11/20 职场文书
教师教育心得体会
2016/01/19 职场文书
2016年读书月活动总结范文
2016/04/06 职场文书
会计工作自我鉴定范文
2019/06/21 职场文书
matlab xlabel位置的设置方式
2021/05/21 Python
MySQL分库分表详情
2021/09/25 MySQL
Apache Pulsar结合Hudi构建Lakehouse方案分析
2022/03/31 Servers