python学习笔记1

来源:互联网 发布:蔡司三坐标软件 编辑:程序博客网 时间:2024/06/10 20:17

转自: python学习笔记 皮大庆

常见函数:内置函数

range(start, end, step):产生一个逐步增加数字的list。

range(6)  ->    [0, 1, 2, 3, 4, 5]range(1,10,2)  ->     [1, 3, 5, 7, 9]range(2,5)  ->    [2, 3, 4]
filter(函数, 序列): 返回符合筛选规则(函数(序列元素)=true)的序列元素。

    >>> filter(lambda m: m%2!=0 and m%3!=0,range(2,10))    [5, 7]
map(函数, 序列[, 序列]): 对指定序列的每一项调用指定函数,并返回由返回值组成的列表。

>>> map(lambdam: m*m*m,range(1,6))[1,8, 27,64, 125] >>> map(None,range(8),map(lambdam: m*m,range(8)))[(0,0), (1,1), (2,4), (3,9), (4,16), (5,25), (6,36), (7,49)] >>> map(lambdam,n: m+n,range(8),map(lambdam: m*m,range(8)))[0,2, 6,12, 20,30, 42,56]
reduce(函数, 序列): 先用序列前两项调用函数得到一个结果,再用此结果和序列下一项再调用函数;依次类推到序列尾部。

    >>> reduce((lambda m,n:m+n),range(1,11))    55
type():返回值和变量的类型,如

    >>> type("world")    <type 'str'>
id():返回值和变量的唯一标识符, 返回值是一整数。每个值或变量都有一个唯一id,id值与变量或值在内存中的位置相关。变量的id也就是它所指向值的id

    >>> id("world")    33394368

字符串、列表、序列:由字符组成的字符串,由任意类型的元素组成的列表,

区别:列表list中的元素能够被修改,序列tuple中的元素不能被修改,而字符串string中的字符则不能被修改。

相同:都用整数作为索引(而字典的索引可以为字符串)

列表的别名和克隆之区别:其id是否相同

>>> fruit = ['apple','orange', 'pear', 'banana']>>> alian = fruit>>> id(alian),id(fruit)(33415536,33415536)>>> clone = fruit[:]>>> id(clone),id(fruit)(33415216,33415536)
列表的元素还可以是变量:但是修改变量的值,并不影响列表中元素的值; 说明它只是把变量的值赋给了列表的元素,而不是变量本身。
>>> a =1>>> b =2>>> nums = [a, b]>>> printnums[1,2]>>> a =b = 0>>> printnums[1,2]>>> a, b(0,0)
字符串片段:字符串也可以通过[start:end:step](像list列表一样,不过不能被赋值)来查找或显示指定片段。
>>> 'hello world!!'[1:]'ello world!!'>>> 'hello world!!'[1:5]'ello'>>> 'hello world!!'[1:5:2]'el'>>> 'hello world!!'[1::2]'el ol!'

string模块之splitjoin函数:分离字符串为列表,结合列表为字符串;其默认分隔符为空格

>>> importstring>>> lists = ['The','rain','is','Spain...']>>> string.join(lists,'_')'The_rain_is_Spain...'>>> string.split(string.join(lists,'_'),'_')['The','rain', 'is', 'Spain...']
序列赋值简化了某些运算(省却了中间变量): 说明其赋值时先确定值后再进行赋值,期间不会再修改右侧的值。

>>> x ="str x"; y ="str y">>> x, y = y, x>>> printx, ystr y str x
字典

字典的别名和拷贝

>>> opposites = {'up':'down', 'right': 'wrong', \'true':'false'}>>> alias = opposites>>> id(alias),id(opposites)(33395888,33395888)>>> copy = opposites.copy()>>> id(copy),id(opposites)(33397472,33395888)


文件的打开关闭和读写:

打开:f = open("c:\\test.dat", "w")、f = open("test.dat", "r")

写入:f.write("Now is the time"),write的参数只能是字符串,如要写入其他类型变量需要用str变成字符串;或用格式化操作符%d、%f、%s。

          import pickle; f = open("test.dat", "w"); pickle.dump(100, f): 也可用dump方法分别向文件中写入了整数、浮点数、列表和数组。

读取:text = f.read()、f.read(50),read可以接受数字参数,表示读出一定数量的字符。如果读到文件的末尾,就返回空字符。

          print f.readline(),readline方法每次从文本文件中读取一行的内容,包括换行符;末尾时readline 方法返回空字符。

          print f.readline(),readlines方法以列表的方法返回文件内其余的内容;末尾时readlines方法返回空列表。

关闭:f.close()


raise自定义异常:举例

class BadNumberError(Exception):    pass def inputAge():    age= input("Input your age:")    if(age>100 or age<18):        raiseBadNumberError, 'out of range'    returnage if __name__ =="__main__":    print"your name is: %d" % inputAge()
对象的拷贝和深拷贝:

浅拷贝:r2 = copy.copy(r1); 一些简单的对象,如点,没有包含任何嵌入的对象,copy方法已经足够了。这种复制叫做浅拷贝。

深拷贝:r2 = copy.deepcopy(r1);对于象长方形类的对象,它的属性中包含点对象,再用copy方法进行复制,虽然生成了新的长方形对象,但这两个对象的点对象是同一个对象;

这样就用到copy模块包含的一个名为deepcopy 的方法,它可以拷贝任何嵌入的对象。这种拷贝我们称之为深拷贝


操作符重定义:

加减法:只需要对__add__和__sub__进行重新定义可以。

乘法:与乘法重定义相关的方法有两个,一个是mul ,另一个是rmul;

        如果乘法操作符“*”的左右操作数都是用户定义的数据类型,那么调用mul;

        若左边的操作数是原始数据类型,而右边是用户定义数据类型,则调用rmul 。


类的私有与公有:类的方法和属性是公有,还是私有,可以从它的名字判断。如果名字是以两个下划线开始,但并不是以两个下划线结束,则是私有的。其余的都是公有的。

如 def __distance(self): #私有方法;self.__p1 = p1 #私有属性


函数参数: 一般参数,带默认值的参数,dictionary参数(形式为**args),tuple参数(形式为*args)。后两者由于dict和tuple故其参数个数为未知和随意长。


lanbda匿名函数:lanbda x, y, z, ...: expression  (其中expression为一句话语句,且为返回结果)


多重继承:如下所示,当它调用其一个函数或内部变量时,查找规则为:depth first,left to right;

即先查找base1,然后查找base1的所有基类;查不到时再查找base2及其所有基类;以此类推到base3

class DerivedClassName (base1,base2,base3):

    <statement-1>

    ...

    <statement-N>


ZOPE: python的killer应用程序,web应用。

wxPython: wxPython is a GUI toolkit for the Python programming language. It allows Python programmers to create programs with a robust, highly functional graphical user interface, simply and easily. It is implemented as a Python extension module (native code) that wraps the popular wxWidgets cross platform GUI library, which is written in C++.
原创粉丝点击