Core Python Programming:NOTE(Python 2.7 default)

Chapter2

2.1

  1. 在交互式解释器中,可以使用print var_name 或者直接使用var_name输出变量,后者输出时会用单引号将变量内容括起来。
  2. 下划线(_)在解释器中表示最后一个表达式的值。
  3. print 语句与字符串操作符(%)结合使用,可以实现字符串替换功能。这一点和C语言中的printf()函数很相似。

2.2

  1. 使用raw_input()内建函数从用户那里获取输入。
  2. 对一个函数调用help内建函数即可得到他的帮助文档

2.3 注释

1.python中注释是以#开头,注释可以在一行的任何地方开始,解释器会忽略该行#之后的任何内容。
2. 有一种叫做文档字符串的特别注释,你可以在模块、类或者函数的起始添加一个字符串,起到在线文档的功能。文档字符串可以在运行时访问,也可以用来生成自动文档。

2.4 操作符

操作符描述
+
-
*
/传统除法,效果与java中类似
//用作浮点除法(对结果四舍五入)
%
**乘方操作符
<
>
>=
<=
==
!=
<>不等于,推荐使用前者

2.5 变量和命名

  1. 命名规则:首字符是字母或者下划线,其它字符可以死字母、下划线或者数字。python大小写敏感
  2. python是动态类型语言,也就是说不需要预先声明变量类型
  3. python不支持自正1和自减1操作符

内建函数

函数描述
raw_input()从用户那里获取输入数据
int()将字符串类型数字转化为int类型
float()将字符串型数字转化为float型
long()
complex()
bool()

2.6

  1. Python支持五种基本数字类型,其中有三种是整型类型
类型符号实例
有符号整型int1010 84 -123
长整型long423235L -5345436 0x23543DECAEE
布尔型booleanTrue False
浮点值float23.14159
复数complex2.34+4.5j 43.56+23J

2. Python中的长整型大小仅仅受限于计算机中虚拟内存的大小。
3. 布尔值被放入到数字环境当中时,TRUE会被当成整型值1,false会被当成整型值0。

2.7

  1. python中的字符串被定义为引号之间字符的集合可以使用索引操作符([])和切片操作符([:])来获得子字符串。
  2. 字符串有其特定的索引规则,第一个字符串的索引为0,最后一个索引为-1。
    这里写图片描述

2.8 列表和元组

  1. 可以将列表和元组当成是普通的“数组”,但是列表和元组可以存储不同类型
  2. 列表元素用[]包裹,元素的个数及元素的值可以改变
  3. 元组元素用小括号包裹,不可以更改(尽管他们的内容可以),元组可以看成是只读的列表。,通过切片运算可以得到子集。

2.9 字典

  1. 字典是python中的映射数据类型,工作原理类似于PErl中的关联数组或者哈希表,由键值对构成。几乎所有的python对象类型都可以作为键,一般以数字或者字符串最常用。
  2. 字典元素使用大括号包裹。

这里写图片描述

2.10 代码块及缩进对齐

  1. 代码块通过缩进对齐表达代码逻辑

2.11 if语句

if x<.0:
    if_suit
else:
    else_suit
  1. print语句默认会给每一行添加一个换行符,在语句的最后添加一个逗号可以防止换行
  2. range函数
  3. len()函数
  4. enumrate()函数
    这里写图片描述

2.14 列表解析

  1. 表示你可以在一行中使用for循环将所有元素放入到一个列表中。
  2. 列表解析还能进行挑选合适的元素放入到列表中。这里写图片描述

2.15 文件和内建函数open(),file()

  1. 打开文件方式:handle=open(file_name,access_mode='r'),file_name变量是我们希望打开的字符串的名称,access_mode中‘r’表示读取,‘w’表示写入,‘a’表示添加,‘+’表示读写,‘b’表示二进制访问。默认为‘r’.如果open成功,一个文件对象句柄会被返回。所有后续文件操作都必须通过此文件句柄完成。
  2. 属性:属性是与数据有关的项目,属性可以使简单的数据值,也可是可执行对象,比如函数和方法

2.17 函数

这里写图片描述
1. 函数参数可以提供默认值,如果调用函数的时候没有提供参数,函数将以默认值调用。
2. 这里写图片描述

2.18 类

  1. 定义类:
  2. 这里写图片描述
  • version是一个静态变量,它将被所有的实例以及四个方法所共享,其中每个实例可以对自己的静态变量重新赋值,赋值结果不会影响到其它的实例。通过类名调用静态变量属性对其进行赋值,效果将会影响到所有的对象。
  • 当一个类实例被创建的时候,init()方法会被自动调用,在类实例创建完毕后执行,类似于构造器。init()可以被当做是一个构造器,但是他和其它语言的构造器不同,他并不创建实例,他仅仅是你的对象创建后执行的第一个方法。
  • self 是类实例自身的引用,其它面向对象语言通常使用一个名为this的标识符。
  1. 使用类:
    这里写图片描述

2.19 模块

  1. 模块是一种组织形式,它将彼此有关系的python代码组织到一个个独立文件当中。模块可以包含可执行代码,函数或者类或者这些东西的集合。
  2. 当你创建了一个python源文件,模块的名字就是一个不带.py后缀的文件名。可以在一个模块中使用import语句导入另外一个模块来使用。
  3. PEP:PEP是python的增强提案(Python Enhancement Proposal),也是在新版本python中增加新特性的方式,它提供了新特性的完整描述,还有添加这些新特性的理由,如果有需要的话,还会提供新的语法,技术实现细节,向后兼容信息等。

2.20 实用的函数

函数描述
dir([obj])显示对象的属性,如果没有提供参数则显示全局变量的名字
help([obj])以一种整齐美观的方式,显示对象的文档字符串,如果没有提供任何的参数,将会进入交互式帮助
int(obj)将一个对象转化为整型
str(obj)将一个对象转化为字符串
len(obj)显示对象长度
open(fn,mode)以某种方式打开一个文件
range([start],stop,[step])返回一个整型列表,起始值为start(default=0),终止值为stop,步进值为step。
raw_input(str)等待用户输入一个字符串,可以提供一个可选参数str作为提示信息
type(obj)返回对象的类型(返回值本身是一个type对象)

Chapter 3 Python基础

3.1 语法和语句

  1. Python 语句中一般使用换行分隔,也就是说,一行一个语句。一行过长的语句可以使用反斜杠分割成几行。

    有两种特殊情况一个语句不使用反斜杠也能跨行书写:

    • 使用闭合操作符,单一语句可以跨多行,例如:在含有小括号,中括号,花括号时可以多行书写.
      • 三引号包含下的字符串也可以跨行书写.
  2. 缩进相同的一组语句构成一个代码快,我们称之为代码组,代码组由不同的缩进分割.

  3. 分号允许你在同一行中写多个语句,语句之间用分号分开,而这些语句也不能在这行开始一个新的代码块
  4. 每一个python脚本文件都可以被当作是一个模块.模块以磁盘文件的形式存在.

3.2 变量赋值

  1. Python语言中,等号(=)是主要的赋值操作符(其他的是增量赋值操作符)
  2. 赋值并不是直接将一个值赋给一个变量.在Python 中,对象是通过引用传递的.在赋值时,不管对象是新创建的,还是一个已经存在的,都应该将该对象的引用赋值给变量.
  3. Python 中赋值语句不会返回值,但是可以链式赋值.
  4. 增量赋值:增量赋值通过使用赋值操作符,将数学运算隐藏在赋值过程当中.+=,-=,*=,/=,&=,**=,<<=,>>=,&=,^=,|=
  5. 多元赋值:采用这种方式赋值的时候,等号两边的元素都是元组.x,y,z=1,2,'dfs'

3.3 标识符

  1. 标识符是计算机中允许作为名字的有效字符串集合
  2. python中标识符包括保留字和”内建”的标识符集合.这些都是不能够使用的.
  3. python用下划线作为变量前缀和后缀指定特殊变量.

    • _XXX 不用’from model import *’ 导入
    • xxx 系统定义名字
    • _xxx 类中的私有变量名.
      建议对于普通的 变量不要使用下划线作为变量名,对于私有的变量,以下划线开头是一个好的编程风格.
  4. 代码的缩进量最好是3~7个,一般是四个,并且不建议使用tab键来进行缩进,因为在用不同的编译器打开的时候可能会出现问题.

  5. 模块结构和布局:
布局解释
起始行(Unix)在类Unix系统下使用,有起始行后可以直接执行脚本,无需调用解释器
模块文档
模块导入
变量定义这里定义的变量为全局变量
类定义
函数定义
主程序无论这个模块是被别的模块导入还是直接执行脚本,这块的代码都会得到执行

6. 通常只有主程序中有大量的顶级可执行代码,所有其他被导入的模块应该只有很少的顶级执行代码.
7. __name__指示模块应该如何被加载,如果模块是被导入,__name__的值为模块的名称,如果模块是被直接执行,__name__的值是被直接执行.
8. 在主程序中书写测试代码:当模块被直接执行的时候进行系统测试

3.6 第一个Python程序

1.一个写入文件的程序

#encoding=utf-8
'模块文档,在此处填写模块的描述性信息'
import os
# 为属性os.linesep取一个新的别名,这样做一方面能缩短变量名,另一方面还能改善访问该变量的性能。
ls=os.linesep;
# get filename
while True:
    fname=raw_input("Enter file name:")
    # 判定当前文件是否已经存在,如果是返回true
    if os.path.exists(fname):
        print "Error,file already exists!!!"
    else:
        break;

# get file content lines
all=[]
print "\nEnter lines('.'by it self to quit)"
#loop until user terminates input
while True:
    entry=raw_input('>')
    if entry!='.':
        all.append(entry)
    else:
        break

# write lines to file with proper line-ending
# 创建一个文件对象
fobj=open(fname,'w')
# 向文件中写入数据
fobj.writelines("%s%s" % (x,ls) for x in all)
# 关闭文件对象
fobj.close();
print "DONE!!!"

  • 类似于os.linesep这样的名字需要解释器做两次查询:(1)查找os以确定他是一个模块(2)在这个模块中查找属性linesep变量。因为模块也是全局变量,我们多消耗了系统资源,如果在一个函数中频繁使用一个属性,给这个属性取一个本地变量别名。变量查找速度将会快很多——在查找全局变量之前总是先查找本地变量。
    1
  1. try-catch-else语句:try子句是一段我们希望检测错误的代码,catch子句是当出现错误时处理错误的代码,else语句是try子句无误时执行的代码
  2. 一个从文件中读取信息的程序
#encoding=utf-8
'读取一个文件中的所有的数据并打印到控制台'
def readFile():
    fname=raw_input("Enter filename:")
    try:
        fobj=open(fname,'r')
    except IOError,e:
        print "File open erro :",e
    else:
        for eachline in fobj:
            print eachline
        fobj.close();
readFile()

Chapter 4

4.1 python对象

  1. Python使用对象模型来存储数据。构建任何类型的值都是一个对象。所有的Python对象都有三个特性:身份、类型和值
    • 身份:每一个对象都有一个唯一的身份标示自己,任何对象的身份可以使用内建函数id()来获取。这个值可以被认为是对象的内存地址。
    • 类型:对象的类型决定了该对象可以保存什么类型的值,可以进行什么样的操作,以及遵守什么样的规则。你可以使用内建函数type()来查看对象的类型,因为在python中类型也是对象,所以type返回的是对象而不是简单的字符串。
    • 值:对象表示的数据项。
      上面三个特性在对象创建的时候就被赋值了,除了值之外,其它两个属性都是只读的。对于新式类型和类,对象的类型也是可以改变的,但是并不推荐这样做。
    • 对象属性:某些对象有属性、值和相关联的可执行代码,比如方法。Python使用句点(.)标记法来访问属性。属性包括响应对象的名字等。

4.2 标准类型

类型Eng
整型Integer
布尔型Boolean
长整型long integer
浮点型Floating point real number
复数型Complex number
字符串String
列表List
元组Tuple
字典Dictionary

4.3 其它内建类型

类型
Null对象(None)
文件
集合/固定集合
函数/方法
模块
1. 对象的一系列的固有属性和特性都必须事先定义好。从这个角度看,类型正是保存这些信息的最佳位置。描述一种类型所需要的信息不可能使用一个字符串来搞定,所以类型不能是一个简单的字符串,这些信息不能也不应该和数据保存在一起,所以我们将类型定义为对象。 2. 所有类型对象的类型都是type. 3. Python有一个特殊的类型,被称为none对象或者noneType。它只是一个值,那就是None.它不支持任何运算也没有任何内建方法。,None没有任何有用的属性,它的布尔值为false。 4. 布尔值:所有对象类型均可以用于布尔测试,同类型的对象之间可以比较大小,每个对象天生具有布尔TRUE或FALSE值,空对象,值为0的任何数字或者null对象》None的布尔值都是false。
对象解释
代码对象代码对象是编译过的Python源代码片段,它是可执行对象。通过调用内建函数compile()可以得到代码对象。代码对象可以被exec命令或者eval()内建函数来执行。代码对象本身不会包含任何执行环境信息。
帧对象帧对象表示Python中的执行帧栈。帧对象包含了Python解释器在执行时所需要的所有的所有的信息。
跟踪记录对象当异常发生的时候一个包含了针对异常的栈跟踪信息的跟踪记录对象会被创建。如果一个异常有自己的处理程序,那么处理程序就可以访问这个跟踪记录对象。
切片对象当使用Python扩展的切片语法的时候,就会获得切片对象。
省略对象省略对象用于扩展切片语法中用于记号
XRange对象调用内建函数xrange()会产生一个XRange对象,用于需要节省内存使用或者range()无法完成的超大数据集合场合。

4.5 标准类型操作符

  1. 对象值的比较:比较操作符用来判断同类型的对象是否相等,所有的内建对象均支持比较运算。比较运算符返回布尔值TRUE或者FALSE
  2. Python提供了is 和 is not 来判断两个变量是否指向同一个对象a is b等价于id(a)==id(b)
  3. 布尔操作符 and,or,not

4.6 标准类型内建函数

函数功能
cmp(obj1,obj2)比较obj1和obj2,根据比较结果返回整型值
repr(obj)返回一个对象的字符串表示,通常可以使用该字符串重新获得一个对象(使用eval()内建函数)
str(obj)返回对象适合可读性好的字符串表示
type(obj)得到一个对象的类型,返回的是一个type对象

这里写图片描述
1. 内建函数str(),repr(),或反引号操作符(“)可以方便的以字符串的方式获取对象的内容,类型,数值属性等信息。

def displayNumberType(num):
    print num,"is",
    if isinstance(num,(int,long,float,complex)):
        print 'a number of type:',type(num).__name__
    else:
        print 'not a number at all'

displayNumberType(12)
displayNumberType(12.3)
displayNumberType(2+3j)
displayNumberType(1211111111111111111111111111111L)

Chapter 5 数字

  1. Python支持多种数值类型:整型,长整型,布尔型,双精度浮点型,十进制浮点型和复数
  2. 数值对象是不可改变对象,更新数值对象是生成一个新的数值对象,并得到他的引用.
  3. 可以使用del语句删除一个对象的引用.
  4. 复数的内建属性:
属性描述
num.real该复数的实部(float)
num.image该复数的虚部(float)
num.conjugate()返回该复数的共轭复数(complex)

5. 对于存在多种数值类型的操作数的算术表达式,将首先将所有表达式转化为统一类型后计算,转换的优先级:复数 浮点数 长整型 整型.
6. 下列操作符,从上到下,优先级依次降低:

操作符描述
**幂运算
+正号
-负号
*
/
//
%
+
-

7. 位操作符(只适用于整型),负数会被当做正数的二进制补码来进行处理

位操作符功能
~num单目运算,对数的每一位取反,结果是-(num+1)
num1<num1左移num2位
num1>>num2
num1&num2num1与num2按位与
num1^num2num1与num2按位异或
num1num2

8. 功能函数:

函数功能
abs(num)返回num的绝对值
coerce(num1,num2)将num1与num2转换位相同类型(向上转型)之后,以一个元组的形式返回
divmod(num1,num2)返回num1/num2的结果及余数
pow(num1,num2,mod=1)取num1的num2次方,如果提供了mod再对结果进行取余运算.
round(fit,ndig=1)取一个浮点数并对其四舍五入,保留ndig位小数

9. 仅适用于整型的内建函数

函数描述
hex(num)将数值转化位16进制形式并以字符串形式返回
oct(num)将数值转化位8进制形式并以字符串形式返回
chr(num)将数值num转化为ASCII字符,范围只能是0<=num<=255
ord(chr)上面函数的逆过程
unichr(num)接受Unicode码值,返回其对应的Unicode字符.

10. random模块

函数描述
randint()两个整型参数,返回两个之间的随机整数
randrange()接受和range()函数一样的参数,随机返回range()结果中的一项
uniform()与randint类似,只不过返回的是浮点数
random()与uniform类似,只不过上限为1.0,下限为0.0
choice()随机返回给定序列中的一个元素

Chapter 6 序列:字符创、列表和元组

6.1 序列

  1. 序列类型有着相同的访问模式:它的每一个元素可以通过指定一个偏移量来找到,而多个元素可以通过切片操作的方式一次性得到。
  2. 序列类型操作符:
序列操作符作用
seq[ind]获取序列中的第ind个元素
seq[ind1:ind2]获取序列中第ind1到第ind2之前的所有元素
seq*expr序列重复expr次
seq1+seq2链接两个序列为一个序列(注1)
obj in seq判断元素是否在序列中

注1:这种操作符并不是最快或者说是最有效的,对于列表,可以使用extend()方法合并两个列表
对于字符串可以使用一个join方法。

使用:
这里写图片描述

使用extend方法合并字符串
这里写图片描述
进行翻转的切片操作:
这里写图片描述

这里写图片描述

  1. 内建函数BIF:

    1. 序列本身就包含了迭代的概念,之所以会这样,是因为迭代这个概念就是从序列,迭代器,或者其他支持迭代操作的对象中泛化得来的。
    2. 序列类型转换工程函数

      函数含义
      list(iter)把可迭代对象转化为列表
      str(obj)把obj对象转化为字符串
      unicode(obj)把对象转换为Unicode字符串(使用默认编码)
      tuple(iter)把一个可迭代对象转化为一个元组对象。
    3. 序列类型内建函数
    函数名功能
    enumerate(iter)接受一个可迭代对象作为参数,返回一个enumerate对象(同时也是一个迭代器),该对象生成由item每个元素的index值和item值组成的元组
    len(seq)返回一个seq的长度
    max(item,key=None) or
    max(arg0,arg1….,key==None)
    返回item中的最大值,如果指定了key这个key必须是可以传递给sort()方法的,用于比较的回调函数
    min(item,key=None) or
    min(arg0,arg1…..,key=None)
    最小值
    reversed(seq)接受一个序列作为参数,返回一个以逆序访问的迭代器
    sorted(iter)返回一个可迭代对象作为参数,返回一个有序的列表

    还有两个,以后添加

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Core PYTHON Programming, 2nd Edition (pdf, Python 2.5) Python is an agile, robust, expressive, fully object-oriented, extensible, and scalable programming language. It combines the power of compiled languages with the simplicity and rapid development of scripting languages. In Core Python Programming, Second Edition, leading Python developer and trainer Wesley Chun helps you learn Python quickly and comprehensively so that you can immediately succeed with any Python project. Using practical code examples, Chun introduces all the fundamentals of Python programming: syntax, objects and memory management, data types, operators, files and I/O, functions, generators, error handling and exceptions, loops, iterators, functional programming, object-oriented programming and more. After you learn the core fundamentals of Python, he shows you what you can do with your new skills, delving into advanced topics, such as regular expressions, networking programming with sockets, multithreading, GUI development, Web/CGI programming and extending Python in C. This edition reflects major enhancements in the Python 2.x series, including 2.5 as well as capabilities set for future versions. It contains new chapters on database and Internet client programming, plus coverage of many new topics, including new-style classes, Java and Jython, Microsoft Office (Win32 COM Client) programming, and much more. Learn professional Python style, best practices, and good programming habits Gain a deep understanding of Python’s objects and memory model as well as its OOP features, including those found in Python’s new-style classes Build more effective Web, CGI, Internet, and network and other client/server applications Learn how to develop your own GUI applications using Tkinter and other toolkits available for Python Improve the performance of your Python applications by writing extensions in C and other languages, or enhance I/O-bound applications by using multithreading Learn about Python’s database API and how to use a variety of database systems with Python, including MySQL, Postgres, and SQLite Core Python Programming delivers Systematic, expert coverage of Python’s core features Powerful insights for developing complex applications Easy-to-use tables and charts detailing Python modules, operators, functions, and methods Dozens of professional-quality code examples, from quick snippets to full-fledged applications The Complete Developer’s Guide to Python—Fully Updated for Python 2.5 New to Python? The definitive guide to Python development for experienced programmers Covers core language features thoroughly, including those found in the latest Python releases Learn advanced topics such as regular expressions, networking, multithreading, GUI, and Web/CGI Includes brand-new chapters on database, Internet, Jython, and COM Client programming Presents hundreds of code samples and practical exercises to strengthen your Python skills Book Details Paperback: 1136 pages Publisher: Prentice Hall; 2nd Edition (September 2006) Language English ISBN-10: 0132269937 ISBN-13: 978-0132269933 File Size: 55.9 MiB epub 格式 http://download.csdn.net/source/3560240
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值