Python语言学习笔记

得到人生中的成功须要的专一与坚持不懈多过天才与机会。  ——C.W. Wendtepython

Python将很快成为你最喜欢的编程语言!正则表达式

Qt库?  PyQt  Perl-Qt算法

 

简单易学,功能强大,高效率的高层数据结构,简单而有效地实现面向对象编程。shell

Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发。数据库

注重的是如何解决问题而不是编程语言的语法和结构。编程

wxPython,Twisted,Boa Constructorwindows

 

 

特点:数组

简单、易学浏览器

免费、开源:Python是FLOSS(自由/开放源码软件)之一。安全

高层语言:没必要纠结管理程序使用内存等底层的东西

可移植性:

若是你当心地避免使用依赖于系统的特性,那么你的全部Python程序无需修改就能够在下述任何平台上面运行。

Linux、Windows、FreeBSD、Macintosh、Solaris、OS/二、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC!这是由于做为解释器的python有各类系统所对应的版本。

解释性:一个用编译性语言好比C或C++写的程序能够从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程经过编译器和不一样的标记、选项完成。当你运行你的程序的时候,链接/转载器软件把你的程序从硬盘复制到内存中而且运行。

而Python语言写的程序不须要编译成二进制代码。你能够直接从源代码运行程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,而后再把它翻译成计算机使用的机器语言并运行。事实上,因为你再也不须要担忧如何编译程序,如何确保链接转载正确的库等等,全部这一切使得使用Python更加简单。因为你只须要把你的Python程序拷贝到另一台计算机上,它就能够工做了,这也使得你的Python程序更加易于移植。

只要运行程序的计算机上装有Python及程序所用的相关的库,那么就可运行。由于它是解释型语言,将大部分工做都交由工具环境来解决,因此程序自己移植性很强。

面向对象:Python支持面向过程的编程也支持面向对象的编程。

面向过程:程序是由过程或可重用代码的函数构建起来的。面向对象:程序是由数据和功能组合而成的对象构建而成的。

 

可扩展性:若是你须要你的一段关键代码运行得更快或者但愿某些算法不公开,能够把你的部分程序用C或C++编写,而后在你的Python中使用。

可嵌入性:能够把Python嵌入C/C++程序,从而向你的程序用户提供脚本功能。

脚本功能?

丰富的库:Python标准库确实很庞大。它能够帮助你处理各类工做,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其余与系统有关的操做。记住,只要安装了Python,全部这些功能都是可用的。这被称做Python的“功能齐全”理念。

除了标准库之外,还有许多其余高质量的库,如wxPython、Twisted和Python图像库等等。

 

关于Perl

Perl是另一种极其流行的开源解释性编程语言。Perl编写大型程序时显示出其不方便。

Perl惟一也是十分重要的优点是它庞大的CPAN库——综合Perl存档网络。就如同这个名字所指的意思同样,这是一个巨大的Perl模块集,它大得让人难以置信——你几乎用这些模块在计算机上作任何事情。

新的Parrot虚拟机按设计能够运行彻底从新设计的Perl 6也能够运行Python和其余解释性语言如Ruby、PHP和Tcl等等。这意味着你未来或许能够在Python上使用全部Perl的模块。这将成为一箭双鵰的事——强大的CPAN库与强大的Python语言结合在一块儿。

其余解释性语言如Ruby、PHP和Tcl等等。

OpenSource.org和UserLinux项目

 

Linux、BSD下安装Python,Windows下安装Python。

shell程序?什么是shell、cmd等等

在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它相似于DOS下的command和后来的cmd.exe。它接收用户命令,而后调用相应的应用程序。

 

网上的Python安装包,指的是什么?

该软件包含编程所须要的模组和编译调试所须要的基本工具。

 

IDLE程序

IDLE是开发python程序的基本IDE(集成开发环境),具有基本的IDE的功能,是非商业Python开发的不错的选择。当安装好python之后,IDLE就自动安装好了,不须要另外去找。是用python+tkinter写的。该环境固然支持编辑功能,网上不少人将IDEL简单地认为是编辑器。

C:\Python27\Lib\idlelib 可找到IDLE运行。

python的编译器就是pythonw.exe,解释器就是python.exe(交互式shell)

python.exe和pythonw.exe区别?

在Windows命令行中使用Python?

从CMD命令行中启动python解释器,须要在windows中设置环境变量,若是安装的是python(x,y),那么应会自动写进了环境变量。

如何退出?window下Ctrl-z,Linux下Ctrl-d

 

window命令行指什么?如何使用?   环境变量?

Linux的包管理软件

 

编辑器:基本要求有语法高亮,文本缩进?

Notepad 即记事本,没有自动文本缩进功能

可用IDLE环境的编辑器   VIM,Emacs(Linux)代码编辑器

Python编辑器列表 支持Python的IDE列表

一旦开始编写大型Python程序,IDE确实颇有用

 

 

Hello World,它是编程之神的传统咒语,能够帮助你更好的学习语言。

cmd和系统命令行?

CMD经常使用命令

lnk 文件是用于指向其余文件(如,程序)的一种文件。这些文件一般称为快捷方式文件。一般它以快捷方式放在桌面上。以方便使用者快速的调用,其扩展名为.lnk。

Python是大小写敏感的

注释 ——任何在#符号右面的内容都是注释

#!/usr/bin/python   这是条特殊的注释后面跟着一个程序。这行告诉你的Linux/Unix系统当执行你的程序的时候,它应该运行哪一个解释器。(python解释器有几种?)

对于Python来讲,程序、脚本或者软件都是指同一个东西。

 

PATH变量?

若是你但愿你的程序可以从各个位置运行呢?那样的话,你能够把你的程序保存在PATH环境变量中的目录之一。每当你运行任何程序,系统会查找列在PATH环境变量中的各个目录。而后运行那个程序。你只要简单地把这个源文件复制到PATH所列目录之一就可使你的程序在任何位置均可用了。

这里指的运行是指在命令行直接输入程序名运行。(若是遇到重名可怎么办) 

help() 括号中填对象 按q可退出帮助

 

在Python中有4种类型的数

整数、长整数、浮点数、复数    二、3.23E-四、2.3+5j

变量没必要要进行声明。

 

字符串  单引号、双引号(在其中可自由使用单引号)  

啥区别?

三引号:指示多行的字符串,在其中可自由使用单双引号

转义符:\’   \’’  \\ 

行末的单独一个反斜杠表示字符串在下一行继续,而不是开始一个新的行。

天然字符串  r"Newlines are indicated by \n"  字符串为字面自己,转义字符失效

必定要用天然字符串处理正则表达式

 

Unicode字符串:Unicode是书写国际文本的标准方法。若是你想要用你的母语如北印度语或阿拉伯语写文本,那么你须要有一个支持Unicode的编辑器。相似地,Python容许你处理Unicode文本——你只须要在字符串前加上前缀u或U。例如,u"This is a Unicode string."。

若是你把两个字符串按字面意义相邻放着,他们会被Python自动级连。

语句以下  print “what is your ” “name”

在Python中没有专门的char数据类型。

 

标示符规则,字母下划线数字组成,数字不可开头

使用变量时只须要给它们赋一个值。不须要声明或定义数据类型。(会根据输入自动区分是哪一种类型的数据,这点确实比C要好玩,与Matlab语句同样)

在一个物理行中写多个逻辑行:用分号;实现

多个物理行写一个逻辑行:即语句分行 用’’’或者\实现或者圆括号、方括号、波形括号

强烈建议坚持在每一个物理行只写一句逻辑行,少用分号

有时候,有一种暗示的假设,可使你不须要使用反斜杠。这种状况出如今逻辑行中使用了圆括号、方括号或波形括号的时候。这被称为暗示的行链接。

print ‘the value is’,i

 

空白在Python中是重要的。事实上行首的空白是重要的。它称为缩进。在逻辑行首的空白(空格和制表符)用来决定逻辑行的缩进层次,从而用来决定语句的分组。

这意味着同一层次的语句必须有相同的缩进。每一组这样的语句称为一个块。

如何缩进

不要混合使用制表符和空格来缩进,由于这在跨越不一样的平台的时候,没法正常工做。我强烈建议你在每一个缩进层次使用单个制表符或两个或四个空格 。

选择这三种缩进风格之一。更加剧要的是,选择一种风格,而后一向地使用它,即只使用这一种风格。

 

就每个东西包括数、字符串甚至函数都是对象这一点来讲,Python是极其彻底地面向对象的。

运算符

**  幂 返回x的y次幂

//  取整除

<< 位左移  >> 位右移   注意,此处不是循环移位

& 按位与  |按位或  ^ 按位异或 ~ 按位翻转      如 3&3=3

逻辑运算符   两个布尔常量  True(1)  Fasle

<  >  <=  >=  !=  ==  not 布尔非 and布尔与  or布尔或

运算符的优先级  有个表格!

'la' * 3获得'lalala'  'a' + 'b'获得'ab'

4/3获得1(整数的除法获得整数结果)。4.0/3或4/3.0获得1.3333333333333333

4 // 3.0获得1.0

x的按位翻转是-(x+1) ~5获得-6     求反后再+1  获得的则是相反数

比较能够被任意链接:3 < 5 < 7返回True。

 

x = False; y = True; x and y,因为x是False,返回False。在这里,Python不会计算y,由于它知道这个表达式的值确定是False(由于x是False)。这个现象称为短路计算。

 

三种控制流语句

if语句

if  逻辑表达式:

   块语句

elif 逻辑表达式:

   块语句

else:

块语句

冒号表示后面跟一个语句块

guess=int(raw_input())函数取得用户猜想的数字。函数只是重用的程序段。

输入对于raw_input函数来讲是一个字符串。咱们经过int把这个字符串转换为整数,并把它存储在变量guess中。

事实上,int是一个类,不过你想在对它所需了解的只是它把一个字符串转换为一个整数(假设这个字符串含有一个有效的整数文本信息)。

在Python中没有switch语句。你可使用if..elif..else语句来完成一样的工做(在某些场合,使用字典会更加快捷。)

 

while 循环

while 逻辑表达式:

     循环体

else:

     语句块

 

当循环跳出时会到else处,else实际上是多余的,但若循环中有break语句,那么加与不加就有点区别了。

 

for循环

for i in range(1,5):

print i

else:

print ‘The for loop is over’

 

range(a,b,c)  用于产生a到b之间的序列,步进为c,默认为1。而且不包括b。

广义来讲,咱们可使用任何种类的由任何对象组成的序列!

 

break语句

len(str)函数  得到字符串长度

若是你从for或while循环中终止,任何对应的循环else块将不执行

 

continue语句

函数便可重用的程序段。 用def关键字定义。

已经使用了许多内建的函数,好比lenrange

def sayhello():

   print ‘Hello World!’

def 函数名(形参列表):

语句块

 

局部变量:在一个块语句内定义,做用域和生命期都在该语句块内。在里面操做,外面的重名变量不受影响。

 

全局变量 global语句   global x,y,z

global语句被用来声明x是全局的——所以,当咱们在函数内把值赋给x的时候,这个变化也反映在咱们在主块中使用x的值的时候。

在函数内使用global,说明该变量是在函数外部定义的。

若是你想要为一个定义在函数外的变量赋值,那么你就得告诉Python这个变量名不是局部的,而是全局的。咱们使用global语句完成这一功能。没有global语句,是不可能为定义在函数外的变量赋值的。

默认参数值的设置

def say(message,times=1):

print message*times     #居然还能够用这种手段

有默认参数值的形参必须放在后面  say(‘hello’)  才能判别参数是给第一个形参的

只有在形参表末尾的那些参数能够有默认参数值,即你不能在声明函数形参的时候,先声明有默认值的形参然后声明没有默认值的形参。这是由于赋给形参的值是根据位置而赋值的。

 

关键参数:咱们使用名字(关键字)而不是位置(咱们前面所一直使用的方法)来给函数指定实参。func(c=50,a=100)   #用这种方式来调用能够罔顾赋参顺序

更自由地赋参

def func(a, b=5, c=10):

    print 'a is', a, 'and b is', b, 'and c is', c

func(3, 7)

func(25, c=24)

func(c=50, a=100)

 

return 语句 于函数中返回函数中内部的局部值

= =b Python里还真看不到分号啊

注意,没有返回值的return语句等价于return None。None是Python中表示没有任何东西的特殊类型。例如,若是一个变量的值为None,能够表示它没有值。

除非你提供你本身的return语句,每一个函数都在结尾暗含有return None语句。

x=None

print x    #什么都没输出

pass语句在Python中表示一个空的语句块。

 

DocStrings 文档字符串

在函数中用

‘’’----------------------

--------空一行----------

-------------------------‘’’      来讲明这个函数的使用方法

使程序更易读,且可在运行时,查看函数文档字符串属性。

print printMax._doc_       函数在Python中也被看作一个对象! . 操做符

 

强烈建议:对你所写的任何正式函数编写文档字符串

随你的Python发行版附带的pydoc命令,与help()相似地使用DocStrings。

 

为何程序运行时要指定命令行参数? 如,main()函数的形参就有个命令行,是用于指定什么的?

 

Python标准库  标准库都有哪些?

模块是什么?模块基本上就是一个包含了全部你定义的函数和变量的文件。

模块的文件名必须.py为扩展名。

import sys    sys模块包含了与Python解释器和它的环境有关的函数。

sys模块的具体介绍?

当咱们执行python using_sys.py we are arguments的时候,咱们使用python命令运行using_sys.py模块,后面跟着的内容被做为参数传递给程序。Python为咱们把它存储在sys.argv变量中。

sys.argv   sys.path

字节编译的.pyc文件  这种文件采用字节码了  输入这种模块 速度会比较快

from 模块名 import 某个变量   那么就不用 模块名.变量名来调用过来 直接使用变量就能够了  from ..import*  指吸纳全部变量名

通常说来,应该避免使用from..import而使用import语句,由于这样可使你的程序更加易读,也能够避免名称的冲突。

 

模块的_name_

假如咱们只想在程序自己被使用的时候运行主块,而在它被别的模块输入的时候不运行主块,咱们该怎么作呢?

每一个Python模块都有它的__name__,若是它是'__main__',这说明这个模块被用户单独运行,咱们能够进行相应的恰当操做。

if __name__ == '__main__':

    print 'This program is being run by itself'

else:

print 'I am being imported from another module'

 

模块的制做和调用    Python附带的标准库就是这样一组模块的例子

模块应该被放置在咱们输入它的程序的同一个目录中,或者在sys.path所列目录之一。每安装完一个库,应该会自动写入sys.path中吧!我应该也能够手动增添路径。

 

dir()函数:使用内建的dir函数来列出模块定义的标识符。标识符有函数、类和变量。

当你为dir()提供一个模块名的时候,它返回该模块定义的名称列表。若是不提供参数,它返回当前模块中定义的名称列表。输入的模块一样是列表的一部分。

del a   删除变量/名称

 

 

数据结构

列表

列表中元素能够是任何种类的对象(不一样类混杂) 包括数(也是对象)甚至其它列表

list=[,,,,,]   len(list)  for item in list: print i

list.append(‘’) 在末尾增长对象list.sort() 重排列表 索引对象 list[]

del list[] 删除某个对象   Python从0开始计数

>>> print range(5)

[0, 1, 2, 3, 4]

>>> print xrange(5)

xrange(5)  

range将返回一个普通列表,可是xrange将返回一个特殊目的对象,将显示为其自身的特殊方式。  使用xrange节省for循环内存开销,for i in xrange(5): 语句块

咱们在print语句的结尾使用了一个逗号来消除每一个print语句自动打印的换行符

元组  与列表类似,但又有区别 

元组和列表十分相似,只不过元组和字符串同样是不可变的即你不能修改元组。

元组一般用在使语句或用户定义的函数可以安全地采用一组值的时候,即被使用的元组的值不会改变。

你必须在第一个(惟一一个)项目后跟一个逗号,这样Python才能区分元组和表达式中一个带圆括号的对象。

即若是你想要的是一个包含项目2的元组的时候,你应该指明singleton = (2 , )。

zoo=(,,,,,)  len(zoo)  newzoo=(,,,zoo)   列表和元组中的对象不必定都必须是同一类的

元组以内的元组仍是元组,被充当成元组中的一个对象。一样元组中的元组,或列表中的元组,或元组中的列表等等都是如此。

索引 zoo[]    zoo[2][]  若是第三个元素是元组或列表的话

zoo=()  zoo=(1,)  必须加逗号  为了区分 zoo=(1) 也可理解为 zoo=1

print '%s is %d years old' % (name, age)   使用元组print格式化输出

在大多数时候,你能够只使用%s定制,而让Python来提你处理剩余的事情。这种方法对数一样奏效。然而,你可能但愿使用正确的定制,从而能够避免多一层的检验程序是否正确。

 

字典 索引靠的是本身指定的键

只能使用不可变的对象(好比字符串)来做为字典的键,可是你能够用不可变或可变的任何对象做为字典的值。

键/值对用冒号分割,而各个对用逗号分割,全部这些都包括在花括号中。

字典是dict类的实例/对象

ab = {       'Swaroop'   : 'swaroopch@byteofpython.info',

             'Larry'     : 'larry@wall.org',

             'Matsumoto' : 'matz@ruby-lang.org',

             'Spammer'   : 'spammer@hotmail.com'

     }

ab[‘Larry’]  按键索引 ab[‘Bravo’]=’jdfjj’  增长  del ab[‘bravo’]   len(ab)

for name,address in ab.items():

print ‘contact %s at %s ’ % (name,address)

if ‘Guido’ in ab:    # ab.has_key(‘Guido’)

  print …………

item方法:返回一个元组的列表,其中每一个元组都包含一对项目——键与对应的值

可使用help(dict)来查看dict类的完整方法列表。

 

列表、元组和字符串都是序列,说它们是序列,由于序列的两个主要特色是索引操做符和切片操做符。他们均可如此操做。

list[N] 0开头  list[-N]  倒数第N个

list[A:B]  切片操做符中的第一个数(冒号以前)表示切片开始的位置,第二个数(冒号以后)表示切片到哪里结束。不包括最后一个。若是不指定第一个数,Python就从序列首开始。若是没有指定第二个数,则Python会中止在序列尾。注意,返回的序列从开始位置开始,恰好在结束位置以前结束。即开始位置是包含在序列切片中的,而结束位置被排斥在切片外。shoplist[:]返回整个序列的拷贝。

注意,列表,元组,字符串均可以使用[]来索引

序列的神奇之处在于你能够用相同的方法访问元组、列表和字符串。

参考  mylist = shoplist  此句表示  二者指向同一实体 一个改变另外一个也改变 这个状况存在与列表和字典中,元组(不可改变)

mylist = shoplist[:]  如此才是正确的拷贝

若是想要复制一个列表或者相似的序列或者其余复杂的对象(不是如整数那样的简单 对象 ),那么你必须使用切片操做符来取得拷贝。

 

字符串的一些方法

str.startwith(‘’)     是否以某字符串开头 返回0或1

if ‘a’ in str:

if str.find(‘’)!=-1:        #寻找是否含有某字符串,返回-1或位置

delimiter.join(mylist)   mylist为列表,delimiter为要嵌入分隔的字符串

以上为Python内建的数据结构。

 

编写一个Python脚本

字符串能够相加  os time 模块

time.strftime('%Y%m%d%H%M%S')   这些定制与用于print语句的定制(%后跟一个元组)相似(但不彻底相同)

zip_command = "zip -qr '%s' %s" % (target, ' '.join(source)) 

使用os.system函数运行命令,利用这个函数就好像在系统中运行命令同样。即在shell中运行命令——若是命令成功运行,它返回0,不然它返回错误号。

C:\Documents\......  在Linux下 目录分隔是/  因此 指代 目录的字符串 windows下 最好加上r,以区别于转义字符

 

not os.path.exists(today)  检查是否有这样的路径,not是求反

os.mkdir(today)  建立文件夹

注意os.sep变量的用法——这会根据你的操做系统给出目录分隔符,即在Linux、Unix下它是'/',在Windows下它是'\\',而在Mac OS下它是':'。使用os.sep而非直接使用字符,会使咱们的程序具备移植性,能够在上述这些系统下工做。

 

comment=raw_input(‘提示语句’)

comment.replace(‘某某,’某’)  将串中的某某用某替代

 

最理想的建立这些归档的方法是分别使用zipfile和tarfile。它们是Python标准库的一部分,能够供你使用。使用这些库就避免了使用os.system这个不推荐使用的函数,它容易引起严重的错误。

 

软件是长出来的,而不是建造的。软件的编写是逐步,渐进式的。

什么(分析)

如何(设计)

编写(实施)

测试(测试与调试)

使用(实施或开发)

维护(优化)

面向对象的编程

在Python中没有数据类型概念,全部都是类,都是对象。

在Python中即使是整数也被做为对象(属于int类)。这和C++、Java(1.5版以前)把整数纯粹做为类型是不一样的。

属于一个对象或类的变量被称为域。域和方法能够合称为类的属性。

域有两种类型——属于每一个实例/类的对象或属于类自己。它们分别被称为实例变量和类变量。

类方法的self参数。

类的方法都必须有第一个的self形参,self指代对象自己。  #至关于C++中的this

MyObject.method(arg1, arg2)= MyClass.method(MyObject, arg1, arg2)

即方法中的第一个形参位置已是被占用的了,你只须要给它一个名字,使用方法时,就当它不存在。

pass    # An empty block

类名后跟一对圆括号可建立一个对象/实例   p=person()

_init_方法 对象一被创建,自动运行的方法 初始化   (相似构造函数)

class Person:

    def __init__(self, name):

        self.name = name

    def sayHi(self):

        print 'Hello, my name is', self.name

p = Person('Swaroop')

p.sayHi()

 

在建立一个类的新实例的时候,把参数包括在圆括号内跟在类名后面,从而传递给__init__方法。__init__方法在类的一个对象被创建时,立刻运行。这个方法能够用来对你的对象作一些你但愿的初始化。

 

类的变量(域):由一个类的全部对象(实例)共享使用。某一对象对它进行修改,则全部的对象都发生变化。

对象的变量:由类的每一个对象/实例拥有。不共享

 

类定义中没self点缀的都是属于类变量。

只能使用self变量来参考同一个对象的变量和方法。

这被称为属性参考。 self.fangfa  self.duixiangbianliang

docstring对于类和方法一样有用。咱们能够在运行时使用Person.__doc__和Person.sayHi.__doc__来分别访问类与方法的文档字符串。

在类语句块的开头或者方法的开头加上’’’ …….‘’’这个就是文档字符串了。

__del__方法,它在对象消逝的时候被调用。可以使用del语句删除一个对象。

当对象再也不被使用时,__del__方法运行,可是很难保证这个方法究竟在何时运行。若是你想要指明它的运行,你就得使用del语句,就如同咱们在之前的例子中使用的那样。

注意:­­­­__为双下划线

若是你使用的数据成员名称以双下划线前缀好比__privatevar,Python的名称管理体系会有效地把它做为私有变量。  (至关于private类型)

私有变量的特征?

 

SchoolMember类被称为基本类或超类。而Teacher和Student类被称为导出类或子类。

一个子类型在任何须要父类型的场合能够被替换成父类型,即对象能够被视做是父类的实例,这种现象被称为多态现象。

Python不会自动调用基本类的constructor,你得亲自专门调用它。

若是在继承元组中列了一个以上的类,那么它就被称做多重继承。

 

使用rjust方法来获得一个按必定宽度右对齐的字符串。str.rjust(10,’*’);

 

经过建立一个file类的对象来打开一个文件,分别使用file类的read、readline或write方法来恰当地读写文件。对文件的读写能力依赖于你在打开文件时指定的模式。模式大概有读模式('r')、写模式('w')或追加模式('a')。若是咱们没有指定模式,读模式会做为默认的模式。最后,当你完成对文件的操做的时候,你调用close方法来告诉Python咱们完成了对文件的使用。

 

Python提供一个标准的模块,称为pickle。使用它你能够在一个文件中储存任何Python对象,以后你又能够把它完好无损地取出来。这被称为持久地储存对象。

还有另外一个模块称为cPickle,它的功能和pickle模块彻底相同,只不过它是用C语言编写的,所以要快得多(比pickle快1000倍)。你可使用它们中的任一个,而咱们在这里将使用cPickle模块。记住,咱们把这两个模块都简称为pickle模块。

 

只要是一些非法操做或者运行中出现的错误,程序就会中断并抛出异常。要有意识地去处理可能发生异常的代码块。

try:

         语句

except 异常符号/(异常符号元组):

         语句

except:     #全部状况

         语句

else:

         语句    #可选,没有异常时发生

 

raise 新定义的异常

 

可使用raise语句引起异常。还得指明错误/异常的名称和伴随异常触发的异常对象。你能够引起的错误或异常应该分别是一个Error或Exception类的直接或间接导出类。

except ShortInputException, x:   指定一个异常状况并跟随其异常对象

在except从句中,咱们提供了错误类和用来表示错误/异常对象的变量。

 

try:

finally:

 

在程序运行的时候,可按Ctrl-c中断/取消程序。(产生异常)KeyboardInterrupt异常被触发,程序退出。

 

f=file('open.txt','w')  若是没加’w’的话,默认为’r’,那么若是此时文件夹中不存在open.tx

t,会抛出IOError

 

能够在Python附带安装的文档的“库参考”一节中了解Python标准库中全部模块的完整内容。

 

类中的特殊方法

__init__(self,…)  __del__(self)  __str__(self)  对对象使用 print或str()时调用

__lt__(self,other) 使用<运算符时调用

__getitem__(self,key) 使用x[key]索引时调用

__len__(self)  对对象使用len()时调用

 

列表综合

listone = [2, 3, 4]

listtwo = [2*i for i in listone if i > 2]

print listtwo

在不少时候,咱们都是使用循环来处理列表中的每个元素,而使用列表综合能够用一种更加精确、简洁、清楚的方法完成相同的工做。

 

当要使函数接收元组或字典形式的参数的时候,有一种特殊的方法,它分别使用*和**前缀。这种方法在函数须要获取可变数量的参数的时候特别有用。

def powersum(power, *args):

    '''Return the sum of each argument raised to specified power.'''

   total = 0

     for i in args:

          total += pow(i, power)

     return total

因为在args变量前有*前缀,全部多余的函数参数都会做为一个元组存储在args中。若是使用的是**前缀,多余的参数则会被认为是一个字典的键/值对。

 

lambda:这是Python支持一种有趣的语法,它容许你快速定义单行的最小函数,相似与C语言中的宏,这些叫作lambda的函数,是从LISP借用来的,能够用在任何须要函数的地方:

>>> g = lambda x: x * 2

>>> g(3)

6

本质上,lambda须要一个参数,后面仅跟单个表达式做为函数体,而表达式的值被这个新建的函数返回。注意,即使是print语句也不能用在lambda形式中,只能使用表达式。

 

exec语句用来执行储存在字符串或文件中的Python语句。eval语句用来计算存储在字符串中的有效Python表达式。

exec “print ‘Hello World’”

eval ‘5+5’

 

 

assert语句用来声明某个条件是真的。

当assert语句失败的时候,会引起一个AssertionError。

assert 判断语句

 

repr()函数和` `用来得到对象的规范字符串表示。能够经过定义类的__repr__方法来控制你的对象在被repr()调用的时候返回的内容。

eval(repr(对象))==对象

 

有许多可供选择的使用Python的GUI:

PyQt 这是Qt工具包的Python绑定。Qt工具包是构建KDE的基石。

PyGTK 这是GTK+工具包的Python绑定。GTK+工具包是构建GNOME的基石。

wxPython 这是wxWidgets工具包的Python绑定。

TkInter 这是现存最老的GUI工具包之一。若是你使用过IDLE,它就是一个TkInter程序。TkInter是标准Python发行版的一部分。

Python标准库是一个丰富的库,在大多数时候,你能够在这个库中找到你所需的东西。

Python.org

 

Jython是用Java语言实现的Python解释器。这意味着你能够用Python语言编写程序而同时使用Java库!

IronPython是用C#语言实现的Python解释器,能够运行在.NET、Mono和DotGNU平台上。这意味着你能够用Python语言编写程序而使用.NET库以及其余由这三种平台提供的库!

使你的计算机自动地完成许多先前没法想象的工做或者编写你本身的游戏,以及更多别的什么东西。

 

 

关于字节流及其转换的问题?

Python中返回多个值的方法!  利用元组tuple    return (x,y,z)  写成返回元组的形式

在调用时,用元组去接收便可

关于切片运算符  不少须要再说明下

y[::-1]   就是倒序

 

序列,元组索引都跟C中的数组同样,a[0]即为第一个元素

a[0:N]  会显示 a[0]到a[N-1]个元素

a[0:-1]  -1指倒退 即a[0:N-1]  因此显示 a[0]到a[N-2]这些元素

序列,元组的特色    a[-1] 便是 a[N-1]

 

rfft、irfft与fft、ifft的区别和应用?

利用rfft对来作统计相关不太可行

fft(x)   x为是实信号,则第一点的虚部必为0,若x为偶数点,则第N/2+1个点虚部也为0

x.shape[axis]  首先,x是一个矩阵,shape返回一个元组,说明每一个维度的元素个数。

若是是一维数组,返回的是一个(N,)的元组 

 

set() 去掉重复元素

sorted()  重排

对于序列list     list.index()用于返回序列中指定值的序号

 

#s.split([sep, [maxsplit]]) 以sep是分隔符,把s分割成一个list。sep默认为空格。maxsplit是分割的次数,默认是对整个s进行分割
#s.rsplit([sep, [maxsplit]]) 和split()的区别是它是从s的串尾往前进行分割

 

#s.splitlines([keepends]) 把s按照行分隔符分红一个list。若是keepends为True则list的每一个元素保留行分割符,若是为False则不保留分隔符

#s.join(seq) 用s把seq序列串联起来

相关文章
相关标签/搜索