您当前的位置: 首页 >  Python

少林码僧

暂无认证

  • 2浏览

    0关注

    317博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

第三篇:python基础之数据类型与变量

少林码僧 发布时间:2018-01-20 18:25:12 ,浏览量:2

一.变量
1 什么是变量之声明变量
#变量名=变量值
age=18
gender1='male' 
gender2='female'
2 为什么要有变量变量作用:“变”=>变化,“量”=>计量/保存状态程序的运行本质是一系列状态的变化,变量的目的就是用来保存状态,变量值的变化就构成了程序运行的不同结果。例如:CS枪战,一个人的生命可以表示为life=active表示存活,当满足某种条件后修改变量life=inactive表示死亡。3 变量值之类型与对象程序中需要处理的状态很多,于是有了不同类型的变量值,x='egon',变量值'egon'存放与内存中,绑定一个名字x,变量值即我们要存储的数据。在python中所有数据都是围绕对象这个概念来构建的,对象包含一些基本的数据类型:数字,字符串,列表,元组,字典等程序中存储的所有数据都是对象,一个对象(如a=1)有:  一个身份(id)  一个类型(type)  一个值(通过变量名a来查看)1 对象的类型也称为对象的类别,python为每个类型都定制了属于该类型特有的方法,极大地方便了开发者对数据的处理2 创建某个特定类型的对象也称为创建了该类型的一个实例,工厂函数的概念来源于此4 可变对象与不可变对象实例被创建后,身份和类型是不可变的,如果值是不可以被修改的,则是不可变对象如果值是可以被修改的,则是可变对象5 容器对象某个对象包含对其他对象的引用,则称为容器或集合6 对象的属性和方法属性就是对象的值,方法就是调用时将在对象本身上执行某些操作的函数,使用.运算符可以访问对象的属性和方法,如a=3+4ja.realb=[1,2,3]b.append(4)7 身份比较,类型比较,值比较x=1y=1x is y #x与y是同一个对象,is比较的是id,即身份type(x) is type(y) #对象的类型本身也是一个对象,所以可以用is比较两个对象的类型的身份x == y #==比较的是两个对象的值是否相等7 变量的命名规范
  • 变量命名规则遵循标识符命名规则,详见第二篇

  8 变量的赋值操作

  • 与c语言的区别在于变量赋值操作无返回值
  • 链式赋值:y=x=a=1
  • 多元赋值:x,y=1,2 x,y=y,x
  • 增量赋值:x+=1
二.数据类型
2.1 什么是数据类型及数据类型分类
程序的本质就是驱使计算机去处理各种状态的变化,这些状态分为很多种例如英雄联盟游戏,一个人物角色有名字,钱,等级,装备等特性,大家第一时间会想到这么表示名字:德玛西亚------------>字符串钱:10000   ------------>数字等级:15    ------------>数字装备:鞋子,日炎斗篷,兰顿之兆---->列表(记录这些人物特性的是变量,这些特性的真实存在则是变量的值,存不同的特性需要用不同类型的值)python中的数据类型python使用对象模型来存储数据,每一个数据类型都有一个内置的类,每新建一个数据,实际就是在初始化生成一个对象,即所有数据都是对象对象三个特性
  • 身份:内存地址,可以用id()获取
  • 类型:决定了该对象可以保存什么类型值,可执行何种操作,需遵循什么规则,可用type()获取
  • 值:对象保存的真实数据
注:我们在定义数据类型,只需这样:x=1,内部生成1这一内存对象会自动触发,我们无需关心这里的字符串、数字、列表等都是数据类型(用来描述某种状态或者特性)除此之外还有很多其他数据,处理不同的数据就需要定义不同的数据类型
标准类型  其他类型 数字 类型type 字符串 Null 列表 文件 元组 集合 字典 函数/方法   类   模块
 
 
2.2 标准数据类型:
2.2.1 数字

定义:a=1

特性:

1.只能存放一个值

2.一经定义,不可更改

3.直接访问

分类:整型,长整型,布尔,浮点,复数

2.2.1.1 整型:

Python的整型相当于C中的long型,Python中的整数可以用十进制,八进制,十六进制表示。

>>> 10
10         --------->默认十进制
>>> oct(10)
'012'      --------->八进制表示整数时,数值前面要加上一个前缀“0”
>>> hex(10)
'0xa'      --------->十六进制表示整数时,数字前面要加上前缀0X或0x

python2.*与python3.*关于整型的区别

python2.*在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807python3.*整形长度无限制

整型工厂函数int()

  python2.7
  python3.5
2.2.1.2 长整型long:
python2.*:跟C语言不同,Python的长整型没有指定位宽,也就是说Python没有限制长整型数值的大小,但是实际上由于机器内存有限,所以我们使用的长整型数值不可能无限大。在使用过程中,我们如何区分长整型和整型数值呢?通常的做法是在数字尾部加上一个大写字母L或小写字母l以表示该整数是长整型的,例如:a = 9223372036854775808L注意,自从Python2起,如果发生溢出,Python会自动将整型数据转换为长整型,所以如今在长整型数据后面不加字母L也不会导致严重后果了。python3.*长整型,整型统一归为整型
  查看
2.2.1.3 布尔bool:
True 和False1和0
2.2.1.4 浮点数float:
Python的浮点数就是数学中的小数,类似C语言中的double。在运算中,整数与浮点数运算的结果是浮点数浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23*109和12.3*108是相等的。浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23*109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的而浮点数运算则可能会有四舍五入的误差。
2.2.1.5 复数complex:
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。注意,虚数部分的字母j大小写都可以,
>>> 1.3 + 2.5j == 1.3 + 2.5J
True
2.2.1.6 数字相关内建函数

2.2.2 字符串
定义:它是一个有序的字符的集合,用于存储和表示基本的文本信息,‘’或“”或‘’‘ ’‘’中间包含的内容称之为字符串特性:1.只能存放一个值2.不可变3.按照从左到右的顺序定义字符集合,下标从0开始顺序访问,有序补充:  1.字符串的单引号和双引号都无法取消特殊字符的含义,如果想让引号内所有字符均取消特殊意义,在引号前面加r,如name=r'l\thf'  2.unicode字符串与r连用必需在r前面,如name=ur'l\thf' 
2.2.2.1 字符串创建

‘hello world’

2.2.2.2 字符串常用操作
移除空白分割长度索引切片
2.2.2.3 字符工厂函数str()
  字符串工厂函数
  python中str函数isdigit、isdecimal、isnumeric的区别
2.2.3 列表
定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素特性:1.可存放多个值2.可修改指定索引位置对应的值,可变3.按照从左到右的顺序定义列表元素,下标从0开始顺序访问,有序
2.2.3.1 列表创建
list_test=[’lhf‘,12,'ok']或list_test=list('abc')或list_test=list([’lhf‘,12,'ok'])
2.2.3.2 列表常用操作
索引切片追加删除长度切片循环包含
2.2.3.3 列表工厂函数list()
  查看

 

2.2.4 元组
定义:与列表类似,只不过[]改成()特性:
1.可存放多个值2.不可变3.按照从左到右的顺序定义元组元素,下标从0开始顺序访问,有序
2.2.4.1 元组创建
ages = (11, 22, 33, 44, 55)或ages = tuple((11, 22, 33, 44, 55))
2.2.4.2 元组常用操作
索引切片循环长度包含
2.2.4.3 元组工厂函数tuple()
2.2.5 字典
定义:{key1:value1,key2:value2},key-value结构,key必须可hash特性:
1.可存放多个值2.可修改指定key对应的值,可变3.无序
2.2.5.1 字典创建
person = {"name": "sb", 'age': 18}或person = dict(name='sb', age=18)person = dict({"name": "sb", 'age': 18})person = dict((['name','sb'],['age',18])){}.fromkeys(seq,100) #不指定100默认为None注意:
>>> dic={}.fromkeys(['k1','k2'],[])
>>> dic
{'k1': [], 'k2': []}
>>> dic['k1'].append(1)
>>> dic
{'k1': [1], 'k2': [1]} 
2.2.5.2 字典常用操作
索引新增删除键、值、键值对循环长度
2.2.5.3 字典工厂函数dict()
2.2.6 集合
定义:由不同元素组成的集合,集合中是一组无序排列的可hash值,可以作为字典的key特性:1.集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值
2.2.6.1 集合创建
{1,2,3,1}或定义可变集合set>>> set_test=set('hello')>>> set_test{'l', 'o', 'e', 'h'}改为不可变集合frozenset>>> f_set_test=frozenset(set_test)>>> f_set_testfrozenset({'l', 'e', 'h', 'o'})
2.2.6.2 集合常用操作:关系运算
   in    not in    ==    !=    =    |,|=:合集    &.&=:交集    -,-=:差集    ^,^=:对称差分
2.2.6.3 集合工厂函数set()
  查看

 

2.2.7 bytes类型

定义:存8bit整数,数据基于网络传输或内存变量存储到硬盘时需要转成bytes类型,字符串前置b代表为bytes类型

>>> x
'hello sb'
>>> x.encode('gb2312')
b'hello sb'
2.2.8 数据类型转换内置函数汇总

注:真对acsii表unichr在python2.7中比chr的范围更大,python3.*中chr内置了unichar

三.运算符
1、算数运算:

 

2、比较运算:

 

3、赋值运算:

 

4、位运算:

注: ~  举例: ~5 = -6  解释: 将二进制数+1之后乘以-1,即~x = -(x+1),-(101 + 1) = -110

按位反转仅能用在数字前面。所以写成 3+~5 可以得到结果-3,写成3~5就出错了

5、逻辑运算:

 

and注解:

  1. 在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值;而是,返回它们实际进行比较的值之一。
  2. 在布尔上下文中从左到右演算表达式的值,如果布尔上下文中的所有值都为真,那么 and 返回最后一个值。
  3. 如果布尔上下文中的某个值为假,则 and 返回第一个假值

or注解:

  1. 使用 or 时,在布尔上下文中从左到右演算值,就像 and 一样。如果有一个值为真,or 立刻返回该值
  2. 如果所有的值都为假,or 返回最后一个假值
  3. 注意 or 在布尔上下文中会一直进行表达式演算直到找到第一个真值,然后就会忽略剩余的比较值

and-or结合使用:

  1. 结合了前面的两种语法,推理即可。
  2. 为加强程序可读性,最好与括号连用,例如:
    (1 and 'x') or 'y'

6、成员运算:

 

7.身份运算

 

8.运算符优先级:自上而下,优先级从高到低

四.标准数据类型特性总结

按存值个数区分

标量/原子类型 数字,字符串 容器类型 列表,元组,字典

 

 

按可变不可变区分

可变 列表,字典 不可变 数字,字符串,元组

 

 

按访问顺序区分

直接访问 数字 顺序访问(序列类型) 字符串,列表,元组 key值访问(映射类型) 字典

  

 

关注
打赏
1661398670
查看更多评论
立即登录/注册

微信扫码登录

0.0530s