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的专栏

相关内容

    暂无相关文章

评论关闭