| 個人檔案Alvin的共享空间相片部落格清單 | 說明 |
|
3月21日 python入门1.if __name__可以用来做模块测试,例如:if __name__ == __main__这样就可以判断此模块是被别的模块调用还是自己执行,如果自己执行就可以加上测试代码,而又不影响别的模块调用它,此特性非常cool。 2.字典里面的键值是唯一的,并且不可改变,它的值可以改变,只要重新指定这个键值所对应的值就可以,例如:dict['key'] = newvalue,如果要添加新的项,只要简单的执行如下语句就可dict['newkey'] = newvalue。字典中的数据注意是无序的,而且可以是任意类型的组合,也就是说并不要求一个字典里面的数据是同意类型。删除字典中的特定元素可以用 del dict['key']来实现,要想清空字典则需要调用dict.clear()方法,字典可以通过keys()方法来返回一个包括所有键值的列表。 3.python的列表支持负索引,遵循如下原则list[n] = list[n - len(list)] 一个从前向后从0开始,一个从后向前从-1开始。而且它支持分片操作也就类似字符串求字串操作,也支持负索引。列表支持两种添加操作,append在末尾 添加,insert(n,element)在索引为n处添加,原来在n的元素向后移动,类似链表操作,insert(element)与append相 同,要查找某个元素需要用list的index方法,它返回第一个匹配的元素的索引,如果不存在此元素则报异常,所以在查询某个元素的时候最好先判断此元 素是否在列表中出现,可以用in来测试,如果存在返回1,否则0。列表删除元素需要用remove方法,或pop方法,remove删除第一个匹配的元 素,如果找不到则异常,pop删除最后一个元素,并且返回它的值,很适合dfs,bfs操作。列表可以拼接就像字符串一样,它支持+和extend两种手 段。这两种手段有些区别,+是返回一个拼接后的串,而extend则是对原来字符串的修改(类似),毕竟python的字符串是不可改变的^^,当然支持 +也就支持+=了,意义与c/c++一样,而且更进一步,它还支持*操作符,来实现相同的加法操作,例如list = ['1','2'] * 2 与list = ['1','2'] + ['1','2']相同。 3.元组与列表类似,但是它是不可改变的,所以不支持删除,添加,拼接等操作,而且比较奇怪的是它也不支持index操作,但是支持in关键字来判断是否 存在某个元素,它可以通过list方法来转变成一个列表,列表也可以通过tuple函数转换成员组,它的好处在于,比列表的操作要快(想想, linkedlist和arraylist),还有它也可以作为字典的键值,列表不可以,还有可以格式化输出。元组还有一点需要注意,就是声明空元组用 (),一个元素的元组需要用(element,)与表达式相区分。 4.python语言的变量也分为局部变量还有全局变量,也有作用域的概念,而且不需要声明,变量通过赋值来产生,超出作用域后自动湮灭。与java一 样,一个变量没有初始化,在这里就是没有赋值,编译会报错,这能避免多少错误!引用一句话:“早晚有一天你会为此而感谢Python。” 5.python的格式化输入输出与c非常相像,但只支持%s%d。 6.列表映射非常有用,它通过循环遍历列表中的每一个元素,通过一个固定的函数来改变元素的值形成一个新的列表,但并不改变原有的列表。 7.python的字符串有一个非常有用的方法join,string.join(list)可以将列表list的每一个元素用string分隔开后链接 成一个新的字符串,与此对应的是字符串的split方法,此方法与java中的字符串的split方法一样,只不过功能要小一些。split当不带任何参数的时候默认按照空格分割。 8.from ... import ....用法有一点比较方便,引入的方法或变量可以当成局部变量来使用,不需要通过模块名来限定。如果你要经常使用引入模块的方法或变量,那么用此语法, 又或者你想只用引入模块的某些方法和变量,那么也应该用此语法,当如果你的模块中有方法或变量与引入的模块的变量或方法重名,那么应该用import ...语法,避免名称冲突。 9.python有几个非常有用的内置函数,他们都属于一个叫做__builtsin__的模块,可以认为,每个python程序都默认的在开始的时候导 入此模块,这样就可以在python中自有的使用这些内置函数,如:type,str,dir;type是返回任何对象的类型(对象意味着python中 的一切),str是返回任何对象的字符串形式,dir是返回任何对象的所有属性和方法。 10.getattr()是个十分有用的函数,他返回的是一个方法或者函数的引用有点类似cin,cout一样,例如:getattr(list, 'pop')返回的是list.pop()的引用,而getattr(list,'pop')('element') = list.pop('element')。而且他不仅适用内置的数据类型,还适用于模块。 11.python中有一个类似c中的?:的语法结构,就是and or : bool and a or b当bool = True 输出a, bool = False输出b,但是也不是总成立,当a = false的时候就与?:表现不一致,因为and or完全是一个逻辑表达式,并不特殊,当然可以采取一些手段来达到与?:一样,可以把它封装到list中,这样a就永远不可能为假,最好做成一个函数 def choose(bool,a,b): return (bool and [a] or [b])[0]。 12.lambda函数实际上是一个内联函数,好处就不用多说,它只支持一行的表达式返回,当然参数可以任意多个,它不支持任何的命令,除了默认的return之外。还有一点lambda函数本身永远为真,当然返回值可以任意。 13.python中类的概念,有点类似共享存储区的意思,所有的属性还有方法只有一份,只不过可以有多个实例来使用,它的类还支持一些专有方法,主要目 的是实现各种类的通用操作,有点类似java中由object继承下来的基本方法,但是,python并不是要求所有类都必须有这几个方法,当然如果你实 现了的话,操作起来会更加统一,都跟列表的操作类似。 14.python中还有个地方很像java就是它也提供了封装类,就像java中对基本数据类型做得一样,python也把它的基本类型列表,元组,字典都给封装成了类UserList,UserString,UserDict。 15.python中也支持public 和 private 但是没有friend,所有以两个连续的下划线开头,但结尾不是两个连续的下划线的属性还有方法都是private。 16.一些python教程的地址 http://cn.diveintopython.org/ dive into python http://www.byteofpython.info/language/chinese/index.html 简明python教程 http://docs.python.org/tut/tut.html python tutorial http://www.python.org/doc/current/ref/ python reference manual http://www.python.org/doc/current/lib/ python library reference 17.这是个用java写的解释器,可以在里面调用java api,还没有用过。 http://www.jython.org/ 引用通告此內容的引用通告是: http://iambitious.spaces.live.com/blog/cns!995969AF5BA4502A!107.trak 引述這則內容的部落格
|
|
|