Python 学习笔记 - 3.简单类型

Python 中的每样东西都是对象,不同与其他面向对象语言的是:

第一,Python 中的所有数据值都被封装在相关对象类中。
第二,Python 程序中的所有东西都是可以从程序访问的对象,即使是您编写的代码也不例外。

Python 不包含像 int 这样的简单类型 —— 只有对象类型。如果 Python 中需要整数值,将整数赋值给相应变量(如 i = 100 )即可。在后台,Python 将创建一个整数对象,并将对新对象的引用赋值给变量。问题的关键是:Python 是一种动态类型化语言,所以无需声明变量类型。事实上在单个程序中,变量的类型是可以改变(多次)的。

可以将 PyObject 类之下的所有 Python 类划分为 Python 运行时解释器可以使用的四个主要类别:
1) 简单类型 —— 基本构建块,如 int 和 float。 
2) 容器类型 —— 保存其他对象。 
3) 代码类型 —— 封装 Python 程序的元素。 
4) 内部类型 —— 程序执行期间使用的类型。 

本次重点介绍简单类型。
Python 有五个内置的简单类型:bool、int、long、float 和 complex。这些类型是不可变的,就是说整数对象一旦创建,其值便不可更改。相反,系统将创建新的简单类型对象并将其赋值给变量。通过 Python id 函数,可以查看基本 PyObject 标识的变更方式:

整数 & 浮点数


整数有两种,分别是 int 和 long。其中 int 最大值是 2147483647 (sys.maxint),而 long 长度仅受内存大小限制。

 

复制代码
Code
>>>>>> a = 123 
>>>>>> b = 123L 
>>>>>> type(a) 
<type 'int'> 
>>>>>> type(b) 
<type 'long'> 
>>>>>>

复制代码

 

 

浮点数基本上也没有什么特别之处,不过要注意下面写法不同。

 

 

复制代码
Code
>>>>>> a = 1 
>>>>>> b = 1.0 
>>>>>> type(a) 
<type 'int'> 
>>>>>> type(b) 
<type 'float'> 
>>>>>>

复制代码

 

 

和数字有关的函数有:


1. abs(x) 取绝对值。

 

 

Code
>>>>>> abs(-123
123 
>>>>>>

 

2. coerce(x, y) 将两个数字转换成相同类型。

 

 

6. min(x [, y, z...]) 返回最小的一个数。

 

Code
>>>>>> min(36941
1 
>>>>>>

 

7. max(x [, y, z...]) 返回最大的一个数。

 

Code
>>>>>> max(36941
9 
>>>>>>

 

8. cmp(x, y) 比较数字。x > y 返回 1, x == y 返回 0, x < y 返回 -1。

 

复制代码
Code
>>>>>> cmp(2,1
1 
>>>>>> cmp(1,1

>>>>>> cmp(1,2
-1 
>>>>>>

复制代码

 

 

字符串


Python 中没有字符(char)类型,而且和 C# 一样,字符串是不可以更改的。字符串可以使用单引号(')也可以使用双引号("),或者使用三引号使其跨越多行。

 

 

 

 

 

复制代码
Code
>>>>>> s = '''xwy 


com
''' 
>>>>>> s 
'xwy\n2\n.\ncom' 
>>>>>>

复制代码

 

 

字符串同样支持转义符。还记得 C# 字符串前面那个常用的 "@" 吗?Python 也有类似的东西,就是 "r"。

 

 

Code
>>>>>> s = r"c:\windows\notepade.exe" 
>>>>>> s 
'c:\\windows\\notepade.exe' 
>>>>>>

 

比较有意思的是,Python 中的字符串支持使用乘号来创建一个连续字符串。如:

 

Code
>>>>>> s = "abc" * 6 
>>>>>> s 
'abcabcabcabcabcabc' 
>>>>>>

 

尽管没有字符类型,但依然可以使用索引号来获取字符串中的字符。

 

Code
>>>>>> s = "abc" 
>>>>>> s[1
'b' 
>>>>>>

 

Python 拥有非常方便的切片处理能力,我们可以使用负索引号从字符串结尾进行索引。

 

 

 

 

Code
>>>>>> s = "abcdefg" 
>>>>>> s[2:-1
'cdef' 
>>>>>>

 

 

 

这里需要提一下,Python 比较古怪的多变量赋值方式。

 

复制代码
Code
>>>>>> a,b,c=("xwy2",".","com"
>>>>>> a 
'xwy2' 
>>>>>> b 
'.' 
>>>>>> c 
'com' 
>>>>>> a,b,c="123" 
>>>>>> a 
'1' 
>>>>>> b 
'2' 

>>>>>> c 
'3' 
>>>>>>

复制代码

 

Python 同样支持格式化字符串,类似 C# 中的 String.Format。包括各种类型以及固定宽度输出。

 

Code
>>>>>> s = "str = [%-5s],int = [%05d],float = [%.2f]"%("a",5,3.1415
>>>>>> s 
'str = [a ],int = [00005],float = [3.14]' 
>>>>>>

 

Python 使用如下方式支持 Unicode。

 

复制代码
Code
>>>>>> s = u"abc" 

>>>>>> s 
u
'abc' 
>>>>>> type(s) 
<type 'unicode'> 
>>>>>> s += 'sss' 
>>>>>> s 
u
'abcsss' 
>>>>>>

复制代码

 

 

和字符串相关的常用函数有:


1. lstrip() / rstrip() / strip() 好像多数语言都命名为 LTrim() / RTrim() / Trim()。
>>> " abc ".strip()
'abc'

2. expandtabs() 将 TAB 替换成指定数量的空格。

 

 

Code
>>>>>> "abc ".strip() 
'abc' 
>>>>>>

 

3. lower() / upper() 大小写转换。

 

Code
>>>>>> "ABC".lower() 
'abc' 
>>>>>> "abc".upper() 
'ABC' 
>>>>>>

 

4. swapcase() / title() / capitalize() 分别将全部字符,每单词首字符,短语首字符转成大写。

 

复制代码
Code
>>>>>> "Xwy2.com".swapcase() 
'xWY2.COM' 
>>>>>> "xwy2.com".title() 
'Xwy2.Com' 
>>>>>> "xwy2.com".capitalize() 
'Xwy2.com' 
>>>>>>

复制代码

 

5. isxxxx 判断字符串... 没啥好说的。

 

复制代码
Code
>>>>>> "xwy".isalpha() 
True 
>>>>>> "xwy2".isalnum() 
True 
>>>>>> "123".isdigit() 
True 
>>>>>> " ".isspace() 
True 
>>>>>> "AB".isupper() 
True 
>>>>>>

复制代码

 

6. find() 查找子串,类似的还有 index() / rindex() / rfind()。rxxx 表示找最后一个子串, index 在找不到时会触发异常。

 

复制代码
Code
>>>>>> "abcdefg".find('d',1,-1
3 
>>>>>> "abcdefg".find('d',4-1
-1 
>>>>>> "aaa1111aaa".rfind('aaa'
7 
>>>>>> "aa1111aaa".index('b'

Traceback (most recent call last): 
File 
"<pyshell#192>", line 1in <module> 
'aa1111aaa'.index('b'
ValueError: substring 
not found 
>>>>>>

复制代码

 

7. count() 统计子串数量。

 

Code
>>>>>> "Loong Tsui".count("o"
2 
>>>>>>

 

8. replace() 替换子串

 

Code

 

9. splite() 分解字符串。

 

复制代码
Code
>>>>>> "a b c d".split(" "
[
'a''b''c''d'
>>>>>> "a b c".split(" ",2
[
'a''b''c'
>>>>>> "a b c d".split(" ",2
[
'a''b''c d'
>>>>>> "a b c d e".split(" "2
[
'a''b''c d e'
>>>>>>

复制代码

 

10. join() 连接字符串。

 

Code
>>>>>> "|".join(["a","b","c","d"]) 
'a|b|c|d' 
>>>>>> "|".join(["首页","b","c","d"]) 
'\xca\xd7\xd2\xb3|b|c|d' 
>>>>>>

 

 

 

类型转换


转换函数和多数编程语言类似。

 

 

复制代码
Code
>>>>>> int("123"
123 
>>>>>> long("123"
123L 
>>>>>> float("123.45"
123.45 
>>>>>> float(123
123.0 
>>>>>> float(123L
123.0 
>>>>>> ord("a"
97 
>>>>>> chr(97
'a' 
>>>>>> hex(97
'0x61' 
>>>>>> str(123
'123'

复制代码

 

 

 

 

 

 

 

 

 

 

复制代码
Code
>>>>>> a = 1.0 
>>>>>> b = 2 
>>>>>> s = coerce(a,b) 
>>>>>> type(s) 
<type 'tuple'> 
>>>>>> s 
(
1.02.0)(1.02.0
>>>>>>

复制代码

 

3. divmod(a, b) 获取商和余数。返回一个 tuple,如 (2, 1) 分别是商和余数。

 

复制代码
Code
>>>>>> s = divmod(5,2
>>>>>> type(s) 
<type 'tuple'> 
>>>>>> s 
(
21)(21
>>>>>>

复制代码

 

4. pow(x, y) 取幂,和 ** 操作符意义相同。

 

 

Code
>>>>>> 2 ** 3 
8 
>>>>>> pow(2,3
8 
>>>>>>

 

5. round(x, [n]) 四舍五入

 

 

Code
>>>>>> round(3.1415926535897932,2
3.1400000000000001 
>>>>>> round(2.4567,2
2.46

 

 
 
 

posted on 2013-09-23 19:47  一个石头  阅读(174)  评论(0)    收藏  举报