Python基本数据类型

【绪论】

  1. 注释 ——任何在#符号右面的内容都是注释

  2. #! 组织行 ——源文件的头两个字符是#!,后面跟着一个程序。这行告诉你的Linux/Unix系统当你 执行 你的程序的时候,它应该运行哪个解释器。这会在下一节做详细解释。注意,你总是可以通过直接在命令行指定解释器,从而在任何平台上运行你的程序。就如同命令python helloworld.py一样。

  3. 3.Python 不使用{ } ,通过缩进的方式来组织代码。行首的空白(可以是空格或者制表符)即为缩进,空白的长度即用于确定行的缩进层次,从而决定语句的分组。用于表示缩进等级的空格个数不可以随意改变,并且空格与制表符不可以混用。推荐使用4个空格缩进

  4. Python相较于C/C++之类的语言,没有变量的声明,变量定义的过程,Python在运行过程中可跟踪对象的类型,同一变量名也可直接被赋值为新的数据类型,即Python是动态类型。
  5. Python采用引用方式自动进行对象分配,当对象不再使用时自动进行垃圾回收。而C++通过new创建的新的变量之后,必须有相对应的delete,否则会造成内存泄漏。
  6. Python中万物皆对象,如数值,字符串,数据结构,函数,类,模块等。每个对象都有与之相关的属性和方法。例如所有的呃函数都有一个内置的doc属性,它会返回函数源代码重定义的文档字符串。即使在C语言中的基本数据类型(字符型,整型,浮点型数据),在Python中也都是对象。
  7. Python的数据是鸭子类型,是指对象的类型不是主要的,对象是否包含相应的方法或者属性才是主要的。Python中的文件对象是典型的鸭子类型,即只要含有read()或者write()的方法对象,均可当做文件类型进行数据处理。
  8. 相比于C/JAVA语言,函数的返回值可以是多个。
  9. Python不需要显示声明变量,变量在第一次被赋值时自动声明。这是与C/C++,java 语言的变量定义不同之处。Python区分大小写,标识符的第一个字符必须是字母或者下划线,其余字符可以是字母或者数字或下划线。Python中用下划线作为变量前缀和后缀制定特殊变量。xxx代表系统定义名字,_xxx用于类中私有变量名。因此普通变量不推荐使用下划线做前缀。
  10. Python注释分为两种:①以字符#开始,注释语句从#字符开始直到该行结束,注释可以在一行的任何地方开始,解释器会忽略改行#字符之后所有的内容。②另一种叫作文档字符串的特殊注释。可以再模块,类或者函数的开头,使用单引号,双引号,三引号(用于多行文字的情况)添加一个字符串,起到在线文档的作用,常用于说明如何使用这个包,模块,类,函数,甚至包括使用示例和单元测试。与普通注释不同,文档字符串可以在运行时访问,也可以用来自动生成文档。

    文档字符串(docstring)出现的位置包括以下几种:
             a.包的docstring位于包内的init.py文件的开头。
             b.模块的docstring位于模块所在文件的开头。
             c.函数的docstring位于函数名称所在行的下一行,函数体之前。
             d.类的docstring位于类的名称所在行的下一行,所有描述之前。
    
  11. Python中可以通过doc特殊变量,获得文档字符串。在摸块、类声明、函数声明中的第一个没有赋值的字符串可用obj.doc进行访问。其中obj是一个模块、类或者函数的名字。

  12. Python使用缩进来分割代码组。代码的层次关系是通过不同深度的代码体现的。同一代码组的代码必须进行严格左对齐(左边有同样多的空格或者同样多的制表符)。随着缩进深度的增加,代码块的层次也在加深,没有缩进的代码是最高层次的,称作脚本的“主体(main)”部分。

【数字类型】

  1. Python支持多种数字数据类型,包括整型、长整型、布尔型、双精度浮点型和复数。Python中所有的数字都是队形,是不可更改类型,也就是说数字的值改变了就会产生新的对象。Python中变量不需要事先声明,只要在使用时直接赋值即可,赋值后,变量中存放的是对象的引用。
  2. Python中所有的数据都是对象,赋值操作符号“=”的作用是,将变量和内存中的某个对象进行绑定。如果对象已经存在,就进行简单的重新绑定,以便引用“=”右边的对象,如果对象引用尚未存在,就首先创建对象,然后将变量和对象进行绑定。Python是动态语言,变量本身的类型不固定。

    ①#_*_coding: utf_8 _*_                                        源程序中可以输入汉字
    ②radius=input(u"输入半径:  ")                           u表示后续字符为Unicode格式
    ③radius_float = float(raduis)                                float() 将radius字符串转换成浮点
    
  3. Python整数类型包括:布尔型、标准整型、长整型

    ①布尔型 bool :只有两种取值True(1) False(0),实际上布尔型的数据支持普通整型的所有计算,即False+1 之类的计算。 布尔型是整型的子类,但不能再被继承而生成它的子类。【注意】任何为零的数字或者空集(空列表、空元祖、空字典等)在Python中的布尔值都是False。
    ②基本整型 int :Python语言的基本整型相当于C语言中的长整型。 通过执行 一下语句看自己系统的基本整型的取值范围。
                           >>>import sys
                           >>>print sys.maxint
                           >>>2147483647
     从Python2.2起,如果发生溢出,Python会自动将基本整型数据转换为长整型。
     八进制:0o67   、0o45(数字0,小写字母o,注意Python2使用0 而Python3 使用0o)
     十六进制:0x96 、 0X96  (字母A\B\C\D\E\F或者a\b\c\d\e\f表示10,11,12,13,14,15)
    ③长整型:Python2中没有限定长整型数字的表示范围,所以Python的长整型数字能够表达的数值仅与计算机所支持的(虚拟)
     内存大小有关,因此Python能够表达很大的整型数字。Python中,在一个整型数字后面加L或者l(小写),表示这个数字为长
      整型数字,也支持八进制,十六进制。
    
  4. 双精度浮点数 float:Python 中双精度浮点型的精度以及所占字节数依赖于计算机架构和创建Python解释器的编译器。可以通过以下形式查看所在字节数:
    >>>a=3.14
    >>>a.sizeof()
    16
    双精度浮点型科学计算法形式中,用E或者e表示10的幂次,在e/E和指数之间用正负号表示指数的正负。如:9.5e-9
    Python提供内建函数float(),将整型的数字转换为浮点型数据。

  5. 十进制浮点型 Decimal:Python中,双精度浮点型数字的精度是有限的,但有时编写程序时需要制定精度,Python为此提供了另一种数字类型Decimal。decimal类型不是内建的,因此使用它的时候需要导入decimal模块,并使用decimal.Decimal()来存储精确的数字。【注意】这里需要注意的是:使用非整数参数时要记得传入一个字符串而不是浮点数,否则在作为参数的时候,这个值就可能已经不是精确的了。

              如:>>>from decimal import*
                     >>>x=Decimal('0.3')
                     >>>y=x/Decimal(3)
                     >>>y
                      Decimal('0.1')
    
  6. 负数 Complex:
    ①虚部不能单独存在、虚部实部都是浮点数、虚部部分必须有后缀 j/J
    ②复数的内建属性 real,imag 分别表示复数的实部和虚部
    ③复数的conjugate() 返回复数的共轭复数

  7. 算数运算符 Python中的运算符安优先级排序(高到低):*(幂)、+(单目)、-(单目)、、/、//(地板除)、%、+、-
    【注意】:
    ①地板除是指取比商小的最大整数,-5//2=-3
    ② 运算符 / 在Python3中表示真的除法,1/2=0.5 ;而在Python2中,如果两个操作数都为整数则为地板除,否则为真正的除法。在Python2中可以通过from_future_import division 将/改为真正的除法。
    ③幂运算符比起左侧操作数的一元运算符优先级高,比其右侧操作数的一元运算符优先级低。
    ④算术运算如果操作数类型不一致Python将自动进行转换。非复数转换为复数,整型转浮点,一般整型转长整型。

  8. 数字类型函数:
    ①转换工厂函数:int()、long()、float()、complex()、bool()
    ②功能函数: Python有五个内建函数用于数值运算:
    abs() 如果参数是复数,返回复数模(正根)、
    coerce()返回一个包含类型转化完毕的两个数值元素元组。
    divmod(a,b) 返回包含商和余数的元组即(a//b,a%b) 、
    pow()类似于操作符** ,可以进行指数运算,但是pow()还可以接受第三个参数,对一二进行指数,对第三个参数求余运算。
    round()用于对浮点数进行四舍五入运算。第二个参数可选,表示精确到小数点指定位数。

【序列】

Python的序列包括元组,列表和字符串。Python序列类型都是有一些成员组成的一个序列整体,它们的成员都是有序排列的。所有的序列都支持索引操作和切片操作。

①序列都支持的操作符
正向索引:索引值范围从0到偏移量最大值(比序列长度小一)
反向索引:索引值范围从-1(最后一个元素的索引)到序列的负长度(第一个元素索引)
默认索引:切片中其实索引和结束索引都是可以省略的,如果省略起始索引,则从序列的最开始处开始,如果省略结束索引则取到序列的最末尾结束,如果都省略则取整个序列。
在切片索引的正向索引中,起始索引可以小于0,相当于0,结束索引可以大于偏移量最大值,相当于偏移量的最大值。也可以在切片操作中增加第三个参数,用来指定切片的步长,即seq【index1:index2:step】
这里写图片描述
②序列共同支持的函数
这里写图片描述
③关于涉及序列元素大小的函数,如果对应元素不同,遵循以下规则:均为数字强制类型转化后比较,不同类型中比较数字最小,均不是数字通过类型名字的字母顺序比较,如果一方尚有元素另一方已至列表末尾先结束的小。

【字符串】

①Python用字符串来表示和存储文本,用单引号、双引号和三引号作字符串的界定符。单双引号作用基本相同,三引号通常用作包含多行文本字符串的界定符。
②Python有三类字符串:通常意义的字符串,原始字符串和Unicode字符串
通常意义字符串就是单,双,三引号界定的文本。
原始字符串是以R/r开始的字符串,不对其中的转义字符进行转义。
Unicode是书写国际文本的标准方法,如果文件中含有非英语文本,就必须使用Unicode字符串,以U/u开始的字符串。
③【字符串创建】:直接赋值,或是 str() 函数(str(56 ) 即‘56‘)
④【字符串操作】字符串支持表2-2中所有的序列操作
(1)【取某个字符】:s[index],正向负向索引都行
(2)【取子字符串】:同序列的切片操作相同
⑤【格式化操作符%】
这里写图片描述

(1)str()一般是将数值转成字符串。
repr()是将一个对象转成字符串显示,注意只是显示用,有些对象转成字符串没有直接的意思。如list,dict使用str()是无效的,但使用repr可以,这是为了看它们都有哪些值,为了显示之用。

(2)【辅助符号】:%[flags] [width] . [ precision] typecode (注意中间有个点)
说明:
这里写图片描述
(3)m.n 分别表示宽度和小数位数,可以用来动态地代入这两个量:‘%.*f’%(5,2,2.345678) 结果为 ‘2.35’

    ⑥【比较操作符】:Python字符串大小比较是从左到右依次比较字符串中字符的ascii的大小。支持的操作符有:>,<,>=,<=,==,!=,<>(不等于)【注意:Python3不支持 <>】
     ⑦【字符串内建函数】字符串对象名.函数名() 

(1)字符串去空格(strip,lstrip,rstrip)没有参数的去除空格(包括空格键,Tab键,回车键),有参数的时候去除子串
(2)连接字符串(join),join参数为列表,join将所有参数连接在一起以后生成一个新的字符串对象,而‘+’则每连接两个字符串就需要产生一个新的字符串对象。使用格式化操作符%进行字符串连接效率更高,可读性更好,并且可以自动将非字符串数据转化为字符串。
(3)分割和组合(split,rsplit,splitlines) :使用格式为string.split(str,num),string.splitlines(num)按行切片
(4)查找字符串(find,index) string.find(str,begin,end) 查找指定范围,找到返回开始索引,否则返回-1,index与find的使用格式相同只是如果没有找到将会报错
(5) 统计子字符串出现次数(count):string.count(str,begin,end)
(6)替换子字符串(replace):string.replace(str1,str2,num)把字符串str1替换成str2,如果num指定,则替换次数不超过num次。
(7)字符串的测试,判断函数:string.startswith(str,begin,end)是否以str开头
string.endswith(str,begin,end)是否以str结束
string.isalnum()检查是否全部为数字或字母,并至少有一个字符
string.isalpha()检查是否全部为字母,并至少有一个字符
string.isdigit()检查是否全部数字,并至少有一个字符
string.isspace()检查是否全部为空白字符,并至少有一个字符
string.islower()检查是否全部为小写
string.isupper()检查是否全部为大写
string.istitle()检查是否全部为首字母大写

【列表】

列表是Python中常用的序列类型,它是能够储存任意多个不同数据类型对象的容器。Python的列表有点像C语言中的数组,但比数组灵活,列表元素的类型可以不同,还可以用用户自定义的对象作为自己的元素。Python使用[ ] 作为列表的界定符,多个元素之间用逗号隔开。
①【创建列表】:把用逗号分隔的各项数据项用括号括起来就创建了一个列表,也可以用工厂函数list将字符串转换为列表
②【序列操作符】:列表支持表2-2中所有的操作,列表与字符串不同,列表可以通过下表更改列表中的元素的值字符串不能,如果列表中的元素还是列表要访问其中的值,可以通过多微笑表,类似于C语言中的多维数组。
③【比较操作符】:列表可以使用标准比较操作符比较大小(与字符串的相同),比较规则在1.③
④【列表内建函数】:列表对象名.函数名()
(1)append函数添加新元素
(2)extend在列表后追加一个列表的全部元素
(3)insert(pos,elem)
(4)pop 和remove可删除元素 pop(pos) 没有位置则最后一个,返回元素 remove(elem)什么都不返回
(5)count(elem)统计元素出现次数
(6)查找 list.index(obj,begin,end),找到返回,没找到引发ValueError错误
(7)reverse()函数可翻转列表
(8)sort进行排序:list.sort(key =None,reverse=False) key指定方式,reverse指定是否逆序
⑤列表实现常见数据结构:(1)堆 后进先出 append(),pop()
(2)队列 先进先出 append ,pop(0)

【元组】

元组与列表类似,也是一种容器,但是两者有本质上的区别:列表是可变的,而元组是不可变的。Python使用圆括号来作为元组的界定符。
①【创建元组】:把用逗号分隔的各项数据项用圆括号括起来就创建了一个元组,也可以用工厂函数tuple将字符串转换为列表
②【序列操作符】:元组支持表2-2中所有的操作
③【比较操作符】:元组可以使用标准比较操作符比较大小(与字符串的相同),比较规则在1.③ 【注意】在Python3.x中如果比较运算符(>,<,>=,<=)的操作数类型不同将引发TypeError异常,请注意这并不适用与== 和!= 运算符,因为不同类型的对象比较式总是不相等的。Python3.x也不再支持cmp()方法,可以用表达式(a>b)-(a< b ) 代替cmp( )
④【可变对象】:元组定以后是不可变的,但是如果元组中包含了可变对象如列表,那么改变其可变对象某种意义来说也是改变了元组。

【字典】

  1. 字典是无序的,由键值对构成,键必须是唯一的,通过键来存取对象,使用{}作为界定符
  2. 【字典创建】
    ①将键值对用大括号括起来就创建了字典对象,Python也允许用一对空的大括号创建空的字典,键值之间用冒号分隔,键值对之间用逗号分隔。 ②使用dict() 来创建字典,主要形式:dict()创建空字典,dict(mapping、iterable、**kwargs)使用键值对、可迭代对象、键值对创建新的字典
  3. 【字典访问】
    ①访问元素 d[key] :如果key即键值不存在会报错,为了避免错误,d.has_key(key) 或者 key in/not in d 的方式来检测字典中是否存在该键值
    ② 遍历: for key in d ;for key in d.keys(),for value in d.values()
    ③添加元素:字典变量名[新键名] = 值
    ④修改元素:字典变量名[修改键名] = 值
    ⑤删除元素:d.pop(key) ;del d[key] 删除字典元素的时候必须指定删除元素的键
    ⑥清空字典:d.clear()
    ⑦删除字典:del d
  4. 【字典相关函数】①len(d) 求字典中元素个数
    ②hash(key) 判断某个对象是否可以做一个字典的键
    ③常用函数总结:

(1) dict.copy() 浅复制字典
(2)dict.fromkeys(seq,val)
以seq中各值做字典的键创建并返回一个字典,val为各键对应的初始值,如果不指定val则默认为None.
(3)d.get(key,default)
返回字典中key所对应的value,如果字典中不存在key,则返回default,如果不指定default则返回None
(4)dict.items() 返回字典中键值对列表
(5)dict.iteritems() dict.iterkeys() dict.itervalue() 返回迭代对象而不是列表
(6)dict.pop(key,default)
如果字典中出现key删除key所对应的元素,并且返回value,如果key不存在返回default,如果没有指定default,则引发KeyError错误
(7)dict.setdefault(key,default)
如果字典中存在key,与get()相似,如果不存在key添加key:default元素。
(8)dict1.update(dict2)
将字典dict2中的元素添加到dict1,如果两个字典中都有的关键字,dict1中将被覆盖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值