一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

python3数据类型的学习笔记

时间:2015-03-21 编辑:简简单单 来源:一聚教程网


在 Python 中, 每个值都有一种数据类型,但您并不需要声明变量的数据类型。Python会根据每个变量的初始赋值情况分析其类型。
Python 有多种内置数据类型。以下是比较重要的一些:

Booleans[布尔型] 或为 True[真] 或为 False[假]。
Numbers[数值型] 可以是 Integers[整数](1 和 2)、Floats[浮点数](1.1 和 1.2)、Fractions[分数](1/2 和 2/3);甚至是 Complex Number[复数]。
Strings[字符串型] 是 Unicode 字符序列,例如: 一份 html 文档。
Bytes[字节] 和 Byte Arrays[字节数组], 例如: 一份 jpeg 图像文件。
Lists[列表] 是值的有序序列。
Tuples[元组] 是有序而不可变的值序列。
Sets[集合] 是装满无序值的包裹。
Dictionaries[字典] 是键值对的无序包裹。
当然,还有更多的类型。在 Python 中一切均为对象,因此存在像 module[模块]、 function[函数]、class[类]、 method[方法]、 file[文件] 甚至 compiled code[已编译代码] 这样的类型。您已经见过这样一些例子:模块的 name、 函数的 docstrings 等等。将学到的包括 《类 与 迭代器》 中的 Classes[类],以及 《文件》中的 Files[文件]。

Strings[字符串]和 Bytes[字节串]比较重要,也相对复杂,足以开辟独立章节予以讲述。让我们先看看其它类型。

数值类型是可畏的。有太多类型可选了。Python 同时支持 Integer[整型] 和 Floating Point[浮点型] 数值。无任何类型声明可用于区分;Python 通过是否有 小数 点来分辨它们。


>>> type(1)                

>>> isinstance(1, int)     
True
>>> 1 + 1                  
2
>>> 1 + 1.0                
2.0
>>> type(2.0)

 

① 可以使用 type() 函数来检测任何值或变量的类型。正如所料,1 为 int 类型。
② 同样,还可使用 isinstance() 函数判断某个值或变量是否为给定某个类型。
③ 将一个 int 与一个 int 相加将得到一个 int 。
④ 将一个 int 与一个 float 相加将得到一个 float 。Python 把 int 强制转换为 float 以进行加法运算;然后返回一个 float 类型的结果。
浮点数精确到小数点后 15 位。

整数可以任意大。

Python 2 对于int[整型] 和 long[长整型] 采用不同的数据类型。int 数据类型受到 sys.maxint 的限制,因平台该限制也会有所不同,但通常是 232-1。Python 3 只有一种整数类型,其行为方式很有点像 Python 2 的旧 long[长整数] 类型。参阅 pep 237 了解更多细节。

常见数值计算

//在 Python 2 中,运算符 / 通常表示整数除法,但是可以通过在代码中加入特殊指令,使其看起来像浮点除法。在 Python 3 中,/ 运算符总是表示浮点除法。参阅 pep 238 了解更多细节。
//  / 运算符执行浮点除法。即便分子和分母都是 int,它也返回一个 float 浮点数。
 
>>> 10/2
5.0
>>> 11/2
5.5
//  // 运算符执行古怪的整数除法。如果结果为正数,可将其视为朝向小数位取整(不是四舍五入),但是要小心这一点。
>>> 11//2
5
//当整数除以负数, // 运算符将结果朝着最近的整数“向上”四舍五入。从数学角度来说,由于 −6 比 −5 要小,它是“向下”四舍五入,如果期望将结果取整为 −5,它将会误导你。
>>> -11//2
-6
//// 运算符并非总是返回整数结果。如果分子或者分母是 float,它仍将朝着最近的整数进行四舍五入,但实际返回的值将会是 float 类型。
>>> 11.0//2
5.0
//** 运算符的意思是“计算幂”,11的平方 结果为 121 。
>>> 11**2
121
//% 运算符给出了进行整除之后的余数。11 除以 2 结果为 5 以及余数 1,因此此处的结果为 1。
>>> 11%2
1

python中的分数


//引入分数模块
>>> import fractions
>>> x = fractions.Fraction(1, 3)
>>> x
Fraction(1, 3)
>>> x * 2
Fraction(2, 3)
>>> fractions.fration(6, 4)
Traceback (most recent call last):
  File "", line 1, in
AttributeError: 'module' object has no attribute 'fration'
//自动约分
>>> fractions.Fraction(6, 4)
Fraction(3, 2)
//分母若为0会提示出错
>>> fractions.Fraction(3, 0)
Traceback (most recent call last):
  File "", line 1, in
  File "/usr/local/lib/python3.3/fractions.py", line 167, in __new__
    raise ZeroDivisionError('Fraction(%s, 0)' % numerator)
ZeroDivisionError: Fraction(3, 0)
//也算约分的一种形式吧
>>> fractions.Fraction(0, 3)
Fraction(0, 1)

python中的三角函数


>>> import math
>>> math.pi
3.141592653589793
>>> math.sin(math.pi /2)
1.0
>>> math.tan(math.pi /4)
0.9999999999999999
在布尔环境中,如果变量值为0,或者0.00…这种情况,判断为False,其他的如1,0.1都为True

 

字符串分析

在Python 3,所有的字符串都是使用Unicode编码的字符序列。(这是非常好用的东西)

类似列表,可以使用+操作符来连接(concatenate)字符串。


>>> s = '深入 python'
>>> len(s)
9
>>> s[0]
'深'
>>> s + '3'
'深入 python3'

Python 3支持把值格式化(format)成字符串。可以有非常复杂的表达式,最基本的用法是使用单个占位符(placeholder)将一个值插入字符串。


>>> username = 'mark'
>>> password = 'zspwd'
>>> '{0}'s password is {1}' . format(username, password)
  File "", line 1
    '{0}'s password is {1}' . format(username, password)
         ^
SyntaxError: invalid syntax
>>> '{0}\'s password is {1}' .format(username, password)
"mark's password is zspwd"
python的字符串切片(相当于有些程序的substr功能)


>>> a_string = 'My alphabet starts where your'
>>> a_string[3]
'a'
>>> a_string[3:]
'alphabet starts where your'
>>> a_string[:5]
'My al'
>>> a_string[3:11]
'alphabet'
>>> a_string[3:-3]
'alphabet starts where y'
切片位置从0开始,切到但不包含第二个参数的位置(这和很多程序语言有所差异)

python3最好全使用utf-8编码

热门栏目