Python核心编程(第二版)第2章 快速入门
Python的主提示符(>>>)是解释器告诉你它在等待你输入下一个语句。
Python的次提示符(...)告诉你解释器正在等待你输入当前语句的其他部分
Python有两种主要的方式来完成你的要求——语句和表达式。语句使用关键字来组成命令。表达式没有关键字,他们可以是使用数学操作符构成的算数表达式,也可以是使用括号调用的函数。
2.1 程序输出,print语句及“Hello World!”
Python的print语句,与字符串格式操作符(%)结合使用,可实现字符串替换功能。
>>> print "%s is number %d!" % ("Python", 1)
Python is number 1!
%s表示由一个字符串来替换
%d表示由一个整型来替换
%f表示由一个浮点型来替换
2.2 程序输入和raw_input()内建函数
raw_input读取标准输入,并将读取到的数据赋值给指定的变量。可以用int()内建函数将用户输入的字符串转换为整型。
>>> num = raw_input("Please in put a number:")
>>> print "You have input a number %d" % int(num)
You have input a number 1
如果需要得到一个生疏函数的帮助,只需要对它调用内建函数help()来得到相应的帮助信息。
2.3 注释
#:从#开始直到一行结束的内容都是注释。
文档字符串:你可以在模块,类或者函数的起始添加一个字符串,起到在线文档的功能。与普通注释不同,文档字符串可以在运行时访问,也可以自动生成文档。
2.4 操作符
算数操作符:
+ - * / // % **
/:执行的是地板除,取比商小的最大整数
//:浮点除法,对结果进行四舍五入
** :乘方
比较操作符:
< <= > >= == != <>
Python支持两种“不等于”比较操作符,!=和<>,分别是C风格和ABC/Pascal风格,目前后者慢慢地被淘汰了,推荐前者。
>>> 3 > 2 > 1
True
等价于
>>> 3 > 2 and 2 > 1
True
2.5 变量和赋值
变量名仅仅是一些字母开头的标识符,另外也包括下划线。其他的字符可以是数字,字母或下划线。Python变量名的大小写是敏感的。
Python是动态类型语言,也就是说不需要预先声明变量的类型。变量的类型和值在赋值那一刻被初始化。
n=n * 10 等价于n*=10
Python不支持C语言中的自增1和自减1操作符,即n++ or --n
2.6 数字
Python支持5种基本数字类型,其中有3种是整数类型。
有符号整型 长整型 布尔型 浮点型 复数
Python的长整型类似于Java中的BigInteger类型。
整型与长整型正在逐步统一为一种整数类型。
如果将布尔值放到一个数值上下文环境中,True会被当成整型值1,而False则会被当成整型值0.
复数在其他语言中通常不被直接支持,一般通过类来实现。
还有第6种数字类型decimal,它不是内建类型,必须先导入decimal模块才可以使用这种数据类型。
>>> import decimal
>>> print decimal.Decimal('1.1')
2.7 字符串
Python支持使用成对的单引号或双引号,三引号(三个连续的单引号或双引号)可以用来包含特殊字符。、
使用索引符([])和切片操作符([:])可以得到子字符串。字符串有其特有的索引规则:第一个字符的索引是0,最后一个字符的索引是-1.
加好(+)用于字符串连接运算,星号(*)则用于字符串重复。
>>> pystr = 'Python'
>>> iscool = 'is cool!'
>>> pystr[0]
'P'
>>> pystr[2:5]
'tho'
>>> iscool[:2]
'is'
>>> iscool[3:]
'cool!'
>>> iscool[-1]
'!'
>>> pystr + iscool
'Pythonis cool!'
>>> pystr + ' ' + iscool
'Python is cool!'
>>> pystr * 2
'PythonPython'
>>> '-' * 20
'--------------------'
>>> pystr = '''python
... is cool'''
>>> pystr
'python/nis cool'
>>> print pystr
python
is cool
>>>
2.8 列表和元组
和数组一样通过从0开始的数字索引访问元素,但是列表和元组可以存储不同类型的对象。
列表元素用中括号([])包裹,元素的个数及元素的值可以改变。元组元素用小括号(())包裹,不可以更改。元组可以看成是只读的列表。
都可以通过切片运算得到子集。
>>> aList = [1, 2, 3 , 4]
>>> aList[0]
1
>>> aList[2:]
[3, 4]
>>> aList[:3]
[1, 2, 3]
>>> aList[1] = 5
>>> aList
[1, 5, 3, 4]
>>> aTuple = ('robots', 77, 93, 'try')
>>> aTuple
('robots', 77, 93, 'try')
>>> aTuple[:3]
('robots', 77, 93)
>>> aTuple[1] = 5
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>>
2.9 字典
字典是Python中的映射数据类型,几乎所有类型的Python对象都可以用作键,不过一般还是以数字或者字符串最为常用。值可以是任意类型的Python对象,字典元素用大括号({})包裹。
>>> aDict = { 'host' : 'earth' }
>>> aDict['host']
'earth'
>>> aDict.keys()
['host']
>>> aDict['port'] = 80
>>> aDict.keys()
['host', 'port']
>>> for key in aDict:
... print key, aDict[key]
...
host earth
port 80
>>>
2.10 代码块及缩进对齐
代码块通过缩进对齐表达代码逻辑,而不是使用大括号。
2.11 if语句
Python不支持switch/case语句。
>>> str = 'str'
>>> if str[-1] == 's':
... print 's'
... elif str[-1] == 't':
... print 't'
... else:
... print 'r'
...
r
2.12 while循环
>>> counter = 0
>>> while counter < 3:
... print "Loop %d" % counter
... counter+=1
...
Loop 0
Loop 1
Loop 2
2.13 for循环和range()内建函数
print语句默认会给每一行添加一个换行符,只要在print语句的最后添加一个逗号(,),就可以将输出输入到一行。
>>> aList = ['Tom', 'Vivian', 'Shari']
>>> print "print persons:"
print persons:
>>> for person in aList:
... print person,
...
Tom Vivian Shari
>>>
为了 输出清晰美观,带逗号的print语句输出的元素之间会自动添加一个空格,也可以将所有数据放在一处输出——只需要将数据放在格式化操作符右侧的元组或字典中。
>>> Tom = 'Tom'
>>> Jacky = 'Jacky'
>>> print Tom, 'and', Jacky, 'are my friends!'
Tom and Jacky are my friends!
>>> print 'There is an error %s' % ('.' * 2 + '.')
There is an error ...
>>>
range()生成一个递增计数的列表
>>> for i in range(5):
... print i
...
0
1
2
3
4
>>>
range()函数经常和len()函数一起用于字符串的索引。
>>> pythonStr = "Anders Fan"
>>> for i in range(len(pythonStr)):
... print pythonStr[i],
...
A n d e r s F a n
>>>
2.14 列表解析
>>> squared = [ 2 ** x for x in range(10) ]
>>> for x in squared:
... print x,
...
1 2 4 8 16 32 64 128 256 512
>>>
2.15 文件和内建函数open(),file()
file_name表示我们希望打开的文件的字符串名字,mode中'r'表示读取,'w‘表示写入,’a‘表示添加,’+‘表示读写,’b‘表示二进制访问。
>>> filename = raw_input('Input a file path:')
>>> filename
'C://Documents and Settings//10170660//Desktop//22222.txt'
>>> fobj = open(filename, mode = 'r')
>>> for line_text in fobj:
... print line_text,
...
1
2
3
>>>
file()功能等同与open()
2.16错误和异常
通过raise语句引发一个异常。
>>> try:
... fileobj = open("C://111.txt", 'r')
... except IOError, e:
... print "Open file error: %s" % e
...
Open file error: [Errno 2] No such file or directory: 'C://111.txt'
>>>
>>> try:
... fileobj2 = open("C://1.txt", 'r')
... fileobj2.close()
... except IOError, e:
... raise e
...
Traceback (most recent call last):
File "<interactive input>", line 5, in <module>
IOError: [Errno 2] No such file or directory: 'C://1.txt'
2.17 函数
如果函数中没有return语句,就会自动返回None对象。
2.17.1如何定义函数
>>> def plus(x):
... "number * 2"
... return x + x
2.17.2如何调用函数
>>> plus(2)
4
2.17.3默认函数
函数的参数可以有一个默认值。
2.18 类
类是面向对象的核心,它扮演相关数据及逻辑容器的角色。
使用class关键字定义类。可以提供一个可选的父类或者说基类;如果没有合适的基类,那就使用object作为基类。class行之后是可选的文档字符串,静态成员定义及方法定义。
>>> class MyClass(object):
... "This is my first class!"
... version
... def MyMethod(self):
... "This is my first method in class"
... print self.version
... def _init_(self, version = 1.0):
... self.version = version
...
>>> myclass1 = MyClass()
>>> myclass1.MyMethod()
1.0
>>>
所有名字开始和结束后有两个下划线的方法都是特殊方法。
当一个类实例被创建时,_init_()方法会自动执行,在类实例创建完毕后执行,类似构造器。_init_()可以被当成构造器,不过不像其他语言中的构造器,它并不创建实例——它仅仅是你的对象创建后执行的第一个方法。它的目的是执行一些对该对象的必要的初始化工作。_init_()需要一个默认的参数。所有的方法都有一个参数self,它是类实例自身的引用。其他面向对象语言通常使用一个名为this的标识符。
2.19 模块
模块是一种组织形式,它将彼此有关系的Python代码组织到一个个独立文件当中。当创建了一个Python源文件,模块的名字就是不带.py后缀的文件名。一个模块创建后,你可以从另一个模块中使用Import语句导入这个模块来使用。
>>> import sys
>>> sys.stdout.write("Hello world! /n")
Hello world!
>>>
2.20 实用函数
dir 显示对象的属性
>>> dir(myclass1)
['MyMethod', '__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_init_', 'version']
help
>>> help(myclass1)
Help on MyClass in module __main__ object:
class MyClass(__builtin__.object)
| This is my first class!
|
| Methods defined here:
|
| MyMethod(self)
| This is my first method in class
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| version = 1.0
int 讲一个对象转换为整型
>>> int("2222222")
2222222
len 返回对象的长度
>>> aList = ["111", 11, 22, "22", myclass1]
>>> len(aList)
5
open 打开文件
range 返回一个整型列表
>>> range(1,5)
[1, 2, 3, 4]
raw_input 等待用户输入一个字符串
>>> str1 = raw_input("input")
>>> str1
'213123'
>>>
str 将一个对象转换为字符串
>>> str(212)
'212'
>>>
type 返回对象的类型
>>> type(212)
<type 'int'>
>>>
摘自:xufei96的专栏