python跟其他语言的不同感受

来源:互联网 发布:风暴英雄 阿巴瑟 数据 编辑:程序博客网 时间:2024/04/30 11:22
我在学习python时,时不时地会拿它跟自己已经学会的语言做对比,想想他们之间的相同和不同的地方。以下就是我学习python感受到的不同或者
相同之处。
1.三重引号表示一个多行字符串。在开始与结束引号间的所有东西都被视为单个字符串的一部分,包括硬回车和其它的引号字符。
2.如果将两个分片索引全部省略,这将包括list的所有元素。但是与原始的list不同,它是原list的完全拷贝。
3.格式化字符串"%s=%s" % (k, v)
4.getattr的第三个参数是一个缺省返回值,也是就当getattr找不到要找的对象时,会返回的值
5.[elem for elem in li if len(elem) > 1]列表过滤,可以用很简洁的语法实现复杂的功能,但是我并不喜欢这种东西,因为主流的编程风格
是没有这种写法的,我宁愿多写点代码来实现同样的功能。
6.and-or技巧:在python里a and b or c的意义跟a?b:c一样,前提条件是b一定要是真,这个技巧我很不喜欢,我觉得根本没必要有这种技巧
存在。可能对于python老手来说这是个好东西,就像上面的列表过滤一样,可以让他们少写几行代码。不过我想说的是如果可以用多的代码段来
获得程序的可读性的话,我宁愿多写几行代码,多写几行代码真的那么难吗??
7.str(None)是'None'
8.判断一个变量是不是None,使用语法is None比==None更快
9.python的类不会自动去掉用父类的方法,即在子类的__init__函数中不会自动调用父类的__init__,所以你必须自己主动去调用父类的__init__
,调用的形式为: 父类名.__init__(self)。一种跟主流语法不一致的地方,It's sucks.
10.判断一个实例是不是一个类的实例:instance.__class__ is Classname,另外判断两个对象是不是同一个也可以使用is:instance1 is instance2
11.__getitem__和__setitem__使得你可以通过如下的方式来访问和修改类的成员值:className['attribute'],className['attribute']=something
12.当一个类被实例化的时候,它会沿着继承树去寻找__init__方法去调用,一旦找到一个后,便进行调用,寻找过程也就到此为止。
13.python专用方法:
__repr__(self):返回类的字符串表示,相当于java的toString()
__cmp__(self,arg):相当于c++重载==操作
__len__(self):返回类的长度,当使用len(class)时,会被调用
__delitem__(self,arg):当调用del item时,会被调用
14.python的私有方法是这样定义的:__functionName,私有属性也是这样定义的:__attribute ,oh,my god!
15.python的for循环要实现主流编程语言for循环是这样做的:
for i in range(len):
 pass
真希望python提供主流编程语言的for循环写法,不过,现在的语言都提供了for。。。in。。。这样的语法,看来得改改写for循环的习惯了
16.os.listdir("d:/a//b")这样写是可以的,看来对/和/是可以混写,貌似主流的语言都可以哦
原创粉丝点击