Python学习Python 变量类型

Posted HeiDi_BoKe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习Python 变量类型相关的知识,希望对你有一定的参考价值。

目录

Pythone变量类型

  变量赋值

  标准数据类型

    数据类型转换

Python 变量类型

  变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。

变量赋值

  Python 中的变量赋值不需要类型声明。每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。等号(=)用来给变量赋值。等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。

[root@tanbaobao myPy]# vi variable.py 
#!/usr/bin/python3.8
# -*- conding:UTF-8 -*-
name = "thy"
sex = 20;
weight = 100.0;

print(name)
print(sex)
print(weight)

[root@tanbaobao myPy]# python3.8 variable.py 
thy
20
100.0

  另外还有多个变量一起赋值(多变量赋值)。

# 创建一个整型对象,值为2,三个变量被分配到相同的内存空间上。
>>> a=b=c=2
>>> print a
2

# 两个整型对象 1 和 2 分别分配给变量 a 和 b,字符串对象 "thy" 分配给变量 c。
>>> a,b,c=1,2,"thy"   
>>> print(a)
1
>>> print(b)
2
>>> print(c)
thy

标准数据类型

  Python 定义了一些标准类型,用于存储各种类型的数据。

  Python有五个标准的数据类型:

1)数字类型用于存储数值Numbers

  是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。当你指定一个值时,Number对象就会被创建。

  可以使用del语句删除对象的引用

del var1[,var2[,var3[....,varN]]]]
# 删除单个或多个
del var
del var_a, var_b

数字类型有四种:

  • int(有符号整型)
  • long(长整型[也可以代表八进制和十六进制])
  • float(浮点型)
  • complex(复数)

  • 长整型也可以使用小写 l,建议使用大写 L,避免与数字 1 混淆。Python使用 L 来显示长整型。
  • Python 还支持复数,复数由实数部分和虚数部分构成,可以用 a + bj,或者 complex(a,b) 表示, 复数的实部 a 和虚部 b 都是浮点型。

PS:long 类型只存在于 Python2.X 版本中,在 2.2 以后的版本中,int 类型数据溢出后会自动转为long类型。在 Python3.X 版本中 long 类型被移除,使用 int 替代。

2)字符串类型String

  字符串或串(String)是由数字、字母、下划线组成的一串字符。

s="a1a2···an"(n>=0)

python的字串列表有2种取值顺序:

  • 从左到右索引默认0开始的,最大范围是字符串长度少1
  • 从右到左索引默认-1开始的,最大范围是字符串开头

  如果你要实现从字符串中获取一段子字符串的话,可以使用 [头下标:尾下标] 来截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾[头下标:尾下标] 获取的子字符串包含头下标的字符,但不包含尾下标的字符。

>>> s = \'abcdef\'
>>> s[1:5]
\'bcde\'

上面的结果包含了 s[1] 的值 b,而取到的最大范围不包括尾下标,就是 s[5] 的值 f。

加号(+)是字符串连接运算符,星号(*)是重复操作。

[root@tanbaobao myPy]# cat demo02.py 
#!/usr/bin/python3.8
# -*- conding:UTF-8 -*-
str = \'Hello World!\'

print(str)
print(str[0])
print(str[2:5])
print(str[2:])
print(str[:-2])
print(str * 2)
print(str + "test")

[root@tanbaobao myPy]# python3.8 demo02.py 
Hello World!
H
llo
llo World!
Hello Worl
Hello World!Hello World!
Hello World!test
>>> str1 = \'hello tanbaobao\'
>>> str1[:6]
\'hello \'
>>> str1[6]
\'t\'
>>> str1[:6] + \'add\' + str1[6:]
\'hello addtanbaobao\'

str()常用函数:

a)字符串处理字母的函数:

.upper()  #全部转为大写字母
.lower() #全部转为小写字母
.title()    #首字母大写
.capitalize() #首字母大写
.swapcase() #大小写相互转换
.lstrip() #去掉左边的空格
.rstrip() # 删除右边,也就是末尾的空格
.strip([chars]) # 去掉左右两边的空格,中间的空格不作处理。默认不带参数是去掉空格,如果带参数,则去掉指定的chars
实例
# capitalize()将首字母转换为大写
>>> str2 = \'xiaoxiao\'
>>> str2.capitalize()
\'Xiaoxiao\'

# casefold()将字符串转换为小写
>>> str2 = "DFNCDOSVNxncn"
>>> str2.casefold()
\'dfncdosvnxncn\'

# center(width)将字符串填充,使用空格来填充至长度width的新字符串
# ljust(width)左对齐,rjust(width)右对齐
>>> str2.center(20) \' DFNCDOSVNxncn \' # endswith(sub)检查字符是否是以sub字符结束,如果是返回True,不是则返回False
# startswith(prefix[,start][,end])检测是否以什么开始
>>> str2.endswith(\'c\') False >>> KeyboardInterrupt >>> str2.endswith(\'n\') True # expandtabs(tabsize=8)将字符中的\\t符转换为空格,不指定参数,默认空格数为8 >>> str3 = \'i\\tlove\\tanbaobao!\' >>> str3.expandtabs() \'i love anbaobao!\'

b)关于查找字符串相关的函数:

.find(sub,start[,end])  #查找指定的字符串,没有则返回-1,找到会返回索引位置  ,find(sub,start,end)
.rfind(sub,start[,end]) #从字符串的右边开始查找
.lfind(sub,start[,end]) # 从字符串左边开始查找
.count() #获取指定字符在该字符串中出现的次数
.index() #和find()功能类似,但是找不指定字符会报错,而find()则会返回-1 (也有rindex,lindex)
find方法和index方法有三个参数, sub=想查找的字符,start=指定位置,end=结束位置
实例
# count(sub,start[,end])返回sub中重现的字符次数,start和end表示参数范围
>>> str2.count(\'n\')
2

# find(sub,start[,end])检查sub是否包含在字符串中,如果有则返回索引值,没有则返回-1
>>> str3.find(\'cr\')
-1
>>> str3.find(\'ao\')
10

# index(sub,start[,end])和find方法一样,但是如果sub不在字符串内会报异常
>>> str3.index(\'b\')
9
>>> str3.index(\'t\')
Traceback (most recent call last):
  File "<pyshell#22>", line 1, in <module>
    str3.index(\'t\')
ValueError: substring not found

c)与字符串判断相关:

.isalnum()  #判断字符串是否全部是数字或者字母
.isupper() #判断是否全是大写
.islower #判断是否全是是小写
.isalpha() #判断是否全是字母
.isdecamal() #判断字符串是都只包含十进制字符    定义一个十进制字符串,只需要在字符串前面加个“u”前缀即可
.isdigit() #判断是否全部是数字
.isidentifier() #判断变量名是否是python的标识符
.isspace() #判断是否全是空格
.istitle() # 符合标题,首字母大写,返回True,否则返回False

PS:返回是布尔类型

注意:

join():以字符串作为分隔,插入到sub中所有字符之间

>>> str4 = \'Tanbaobao\'
>>> str4.join(\'123\')
\'1Tanbaobao2Tanbaobao3\'

partition():找到子字符串sub,把字符分为3个元组(pre_sub,sub,fol_sub),如果字符串不包含sub则返回源字符串(\'原字符串\',\'\',\'\')

>>> str6 = \'i love tanbaobao\'
>>> str6.partition(\'ve\')
(\'i lo\', \'ve\', \' tanbaobao\')

replace(old,new[,count]):将旧字符串替换为新字符串

>>> str6.replace(\'i\',\'I\')
\'I love tanbaobao\'

split(sep=None,maxsplit=-1):不带参数默认以空格为分隔符切片字符串,如果maxsplit有设置则仅分隔maxsplit个子字符串,返回切片后的子字符串拼接列表

>>> str6
\'i love tanbaobao\'
# 默认按空格切
>>> str6.split()
[\'i\', \'love\', \'tanbaobao\']
# 按i切,将i去除了
>>> str6.split(\'i\')
[\'\', \' love tanbaobao\']
# 按a来切,a去除
>>> str6.split(\'a\')
[\'i love t\', \'nb\', \'ob\', \'o\']

translate(table):根据table的规则(可以由str.maketrans(\'a\',\'b\')定制),转换字符串中的字符

>>> str7
\'      aaaassss   ddff\'
# 将s转换为b
>>> str7.translate(str.maketrans(\'s\',\'b\'))
\'      aaaabbbb   ddff\'
# 输出的是ASCII编码
>>> str.maketrans(\'s\',\'b\')
{115: 98}

zfill(width):返回长度为width的字符串,原字符串右对齐,前边用0填充

>>> str3.zfill(30)
\'00000000000000i\\tlove\\tanbaobao!\'

字符串格式化

a)位置参数

>>> "{0} love {1}.{2}".format("I","Love","tanbaobao")
\'I love Love.tanbaobao\'

b)关键字参数

>>> "{a} love {b}.{c}".format(a="I",b="Love",c="tanbaobao")
\'I love Love.tanbaobao\'

c)将位置、关键字参数综合使用(位置参数一定要在关键字参数之前)

>>> "{0} love {b}.{c}".format("I",b="Love",c="tanbaobao")
\'I love Love.tanbaobao\'

d)格式化符号意义

>>> "{{0}}".format("a")
\'{0}\'
>>> "{{0}}".format("不打印")
\'{0}\'
# .1f保留1位小数,f表示四舍五入
>>> \'{0:.1f}{1}\'.format(22.222,\'GB\')
\'22.2GB\'
>>> \'{0:.1f}{1}\'.format(22.252,\'GB\')
\'22.3GB\'
实例
# 格式化字符
>>> \'%c\' %97
\'a\'
>>> \'%c %c %c\' %(97,98,99)
\'a b c\'
# 格式化字符串
>>> \'%s\' % \'i love tanbaobao\'
\'i love tanbaobao\'
# 格式化整数
>>> \'%d + %d = %d\' % (4,5,4+5)
\'4 + 5 = 9\'

e)格式化操作辅助命令

# m总长度,n保留多少位
>>> \'%5.1f\' % 22.222
\' 22.2\'
>>> \'%.2e\' % 22.222
\'2.22e+01\'
>>> \'%10d\' % 5
\'         5\'
# 左边对齐
>>> \'%-10d\' % 5
\'5         \'
>>> \'%+10d\' % 5
# 右边对齐
\'        +5\'
>>> \'%+10d\' % +5
\'        +5\'
>>> \'%+10d\' % -5
\'        -5\'

f)字符串转义字符

3)Python列表list  

  List(列表) 是 Python 中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。

  列表用 [ ] 标识,是 python 最通用的复合数据类型。列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。

加号 + 是列表连接运算符,星号 * 是重复操作。和字符串的类似。

实例1
[root@tanbaobao myPy]# vi demo03.py 
#!/usr/bin/python3.8
# -*- conding:UTF-8 -*-
list = [\'Hello\',20,155.50,\'thy\',100.5]
addlist = [\'123\',\'thy\']

print(list)
print(list[0])
print(list[1:3])
print(list[2:])    # 输出第三个及后面所有
print(list[:-2])    # 从左边开始打印,不包括结尾索引-2(也就是到结尾-2索引截止)
print(list[-2:])    # 从右边开始打印,包括开始索引-2
print(addlist * 2)    # 输出addlist两次
print(list + addlist)    # 打印组合列表

[root@tanbaobao myPy]# python3.8 demo03.py 
[\'Hello\', 20, 155.5, \'thy\', 100.5]
Hello
[20, 155.5]
[155.5, \'thy\', 100.5]
[\'Hello\', 20, 155.5]
[\'thy\', 100.5]
[\'123\', \'thy\', \'123\', \'thy\']
[\'Hello\', 20, 155.5, \'thy\', 100.5, \'123\', \'thy\']    
实例2
>>> member = [\'thy\',\'谭宝宝\',3.1415926,[1,3,5]]
>>> member
[\'thy\', \'谭宝宝\', 3.1415926, [1, 3, 5]]
>>> member.append(\'zs\')
>>> member
[\'thy\', \'谭宝宝\', 3.1415926, [1, 3, 5], \'zs\']
>>> len(member)
5

向列表添加元素:append(),extend(),insert()

a)append():一次只能添加一个元素,添加一个以上的元素会报错

b)extend():一个列表来扩展一个列表。需要注意格式要用[]列表的标识符括起来

c)insert():在指定位置插入元素,索引从0开始

从列表中获取元素单个():通过索引值来获取对应的元素,列表索引值都是从0开始

实例3
# 一个简单的数据交换
>>> member
[\'thy\', \'谭酱\', \'谭宝宝\', 3.1415926, [1, 3, 5], \'zs\', \'xw\', \'zl\']
>>> member[0]
\'thy\'
>>> member[1]
\'谭酱\'
>>> temp = member[0]
>>> member[0] = member[1]
>>> member
[\'谭酱\', \'谭酱\', \'谭宝宝\', 3.1415926, [1, 3, 5], \'zs\', \'xw\', \'zl\']
>>> member[1] = temp
>>> member
[\'谭酱\', \'thy\', \'谭宝宝\', 3.1415926, [1, 3, 5], \'zs\', \'xw\', \'zl\']

从列表删除元素:remove(),del(),pop():

a)remove():前提是知道要移除的元素在列表中有存在:

>>> member
[\'谭酱\', \'thy\', \'谭宝宝\', 3.1415926, [1, 3, 5], \'zs\', \'xw\', \'zl\']
>>> member.remove(3.1415926)
>>> member
[\'谭酱\', \'thy\', \'谭宝宝\', [1, 3, 5], \'zs\', \'xw\', \'zl\']

# 如果不存在,会报错
>>> member.remove(2.1415926)
Traceback (most recent call last):
  File "<pyshell#21>", line 1, in <module>
    member.remove(2.1415926)
ValueError: list.remove(x): x not in list

b)del()语句:del不是方法,是一个语句:

# del后面直接跟member对象,会直接将member列表才能够内存中删除
>>> member
[\'谭酱\', \'thy\', \'谭宝宝\', [1, 3, 5], \'zs\', \'xw\', \'zl\']
>>> del member[3]
>>> member
[\'谭酱\', \'thy\', \'谭宝宝\', \'zs\', \'xw\', \'zl\']

c)pop():从列表中取出元素并返回给你,默认从最后一个元素删除,如果要指定删除元素,在pop()中指定参数索引

# 默认从元素最后一个删除,每次只删除一个元素
>>> member
[\'谭酱\', \'thy\', \'谭宝宝\', \'zs\', \'xw\', \'zl\']
>>> member.pop()
\'zl以上是关于Python学习Python 变量类型的主要内容,如果未能解决你的问题,请参考以下文章

Python基础学习代码之变量和类型

Python学习记录之变量与基本数据类型

学习笔记:python3,代码片段(2017)

python学习笔记——变量和简单数据类型

Python学习——循环

Python 常用模块学习