Chinaunix首页 | 论坛 | 博客
  • 博客访问: 497730
  • 博文数量: 74
  • 博客积分: 750
  • 博客等级: 军士长
  • 技术积分: 1453
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-29 15:59
文章分类
文章存档

2014年(30)

2013年(8)

2012年(36)

分类: Python/Ruby

2012-09-25 09:21:51

Python中有四种内建的数值类型:整数、长整数、浮点数和复数。

象1234这样的数被解析为一个十进制的整数。要指定一个八进制或者十六进制的整数,在一个合法的八进制数前加上 0 或者在一个合法的16进制数前加上 0x 就可以了。(如 0644 和 0x100fea8)。 在一个整数后面加上字母 l 或 L系统就认为这是一个长整数(如 1234567890L)。与受机器字长限制整数类型不同,长整数可以是任何长度(只受内存大小限制)。象123.34和1.2334e+02这样的数被解析为浮点数。一个整数或者浮点数加上后缀 J 或者 j 就构成了一个复数的虚部,你可以用一个实数加上一个虚部创建一个复数,比如 1.2 + 12.34J。

Python目前支持两种类型的字符串:

8位字符数据 (ASCII)

16位宽字符数据 (Unicode)

最常用的是ASCII字符串,因为这个字符集刚好只用一个字节就可以字符集中的任意一个字符。通常情况下,ASCII串用单引号('),双引号("),或者三引号(''' 或 """)来定义。字符串前后的引号类型必须一致。反斜杠(\)用来转义特殊字符,比如换行符、反斜杠本身、引号以及其他非打印字符。Table 2.1中列出了公认的特殊字符的表示方法,无法识别的转义字符串将被原样保留(包括前边的反斜杠)。此外,字符串可以包含嵌入的空字节和二进制数据。三引号字符串中可以包含不必转义的换行符和引号。

Table 2.1 Standard Character Escape Codes

标准特殊字符

字符

描述

\

续行符

\\

反斜杠

\'

单引号

\"

双引号

\a

Bell(音箱发出吡的一声)

\b

退格符

\e

Escape

\0

Null(空值)

\n

换行符,等价于\x0a和\cJ

\v

垂直制表符,等价于\x0b和\cK

\t

水平制表符,等价于\x09和\cI

\r

回车符,等价于\x0d和\cM

\f

换页符,等价于\x0c和\cL

\OOO

八进制值(000-377)

\xhh

十六进制值(x00-xff)

\un

Unicode字符值,n是四个十六进制数字表示的Unicode字符

Unicode 字符串用来表示多字节国际字符集,它包括65,536个字符。Unicode字符使用u或者U前缀来定义,例如`a = u"hello"`。在Unicode字符集中,每一个字符用一个16位整数来表示。Unicode字符使用 U+XXXX 这种形式来表示,XXXX是一个由 4 个十六进制数字组成的16进制数。(注意: 这种记法只是一个表示Unicode字符的习惯,并不是Python的语法)。例如U+0068是Unicode字符字母h(在Latin-1字符集中,你可以发现Unicode字符集的前256个字符与Lation-1的对应字符编码完全相同)。当Unicode字符串被赋值时普通字符和特殊字符都直接转换成Unicode字符序数(在[U+0000, U+00FF]中)。例如,字符串"hello\n"映射为ASCII时是:0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x0a,当使用u"hello\n"转换为Unicode字符串时是:U+0068, U+0065, U+006C, U+006C, U+006F, U+000A.任意Unicode字符都可以使用\uXXXX来定义,\uXXXX必须位于一个Unicode字符串中,例如: s = u"\u0068\u0065\u006c\u006c\u006f\u000a" 在Python 的较老版本中,\xXXXX字节序列被用来定义Unicode字符(这与系统识别Unicode字符方式有关)。虽然现在仍然允许这样做,我仍然建议你最好采用新的表示方法。(因为旧的表示方法随时可能废止。)另外,八进制代码\OOO也可以用来定义在[U+0000, U+01FF]中的Unicode字符。 Unicode字符不能通过使用 UTF-8或者UTF-16编码中的原始字节序列来定义。例如,UTF-8编码的字符串 u'M\303\274ller' 建立的七个字符,用Unicode表示为+004D, U+00C3, U+00BC, U+006C, U+006C, U+0065, U+0072,这并不是你想要的结果。这是因为在UTF-8中,多字节序列\303\274用来代表U+00FC,而不是U+00C3, U+00BC。更多关于Unicode编码细节你可以阅读第三章--"类型和对象",第四章--"运算符和表达式",第九章--"输入和输出". 你可以给一个字符串加上前缀r或者R,例如 `r'\n\"'`,这些字符串被称为原始字符串,因为里边几乎所有的特殊字符都会原封不动地留下。不过原始字符串并不能以一个单独的反斜杠结尾(例如 r"\")。如果原始字符串使用ur或者UR前缀来定义的话,\uXXXX仍然会被解析为Unicode字符。如果你不想这样,你可以在它前边再加一个反斜杠,例如ur"\\u1234",它定义了一个含有7个字符的字符串。需要注意的是,定义原始Unicode字符串时,r必须在u之后。 邻近的字符串(被空格或者续行符分割),例如 "hello" 'world' 会被Python自动连结为一个字符串 "helloworld"。无论是普通字符串,Unicode字符串,还是自然字符串,都会自动连结。当然,只要这些字符串中有一个是Unicode字符串,那最终连结的结果也将是一个Unicode字符串。比如 "s1" u"s2" 就会产生 u"s1s2"。这个过程的细节你可以阅读第四章和附录A(the Python library). 如果Python在 -U 命令行参数下运行,所有的字符都会被解析为Unicode。 方括号[...]定义一个列表,圆括号(...)定义一个元组,花括号{...}定义一个字典: a = [ 1, 3.4, 'hello' ] # A list b = ( 10, 20, 30 ) # A tuple c = { 'a': 3, 'b':42 } # A dictionary
阅读(1787) | 评论(5) | 转发(0) |
给主人留下些什么吧!~~

一鸣雨2012-10-23 09:15:19

ssfjhh: 果然,python3里边是不分长短的,还是python3方便.....
对。我开发的现在还是基于2x的平台。我也想用p3。因为p3的书写会变得更加的简洁。但是客户要求。。。。无语。。

一鸣雨2012-10-23 09:15:17

ssfjhh: 果然,python3里边是不分长短的,还是python3方便.....
对。我开发的现在还是基于2x的平台。我也想用p3。因为p3的书写会变得更加的简洁。但是客户要求。。。。无语。。

ssfjhh2012-10-22 15:11:11

一鸣雨: >>> 3141378461847618347l
3141378461847618347L
>>> a = 1234567890L
>>>
>>> a
1234567890L
我的是python2x版本的,你.....
果然,python3里边是不分长短的,还是python3方便

一鸣雨2012-10-22 09:24:12

ssfjhh: 在一个整数后面加上字母 l 或 L系统就认为这是一个长整数(如 1234567890L)

这是什么时候的状况?刚试了下

.
>>> a = 1234567890L
SyntaxError: inva.....
>>> 3141378461847618347l
3141378461847618347L
>>> a = 1234567890L
>>>
>>> a
1234567890L
我的是python2x版本的,你看看你的是不是安装的是3,好像在3里是不支持的。上面是我执行的结果。是可以的

ssfjhh2012-10-11 14:20:26

在一个整数后面加上字母 l 或 L系统就认为这是一个长整数(如 1234567890L)

这是什么时候的状况?刚试了下

.
>>> a = 1234567890L
SyntaxError: invalid syntax
>>>