python使用心得

来源:互联网 发布:影像系统制作软件 编辑:程序博客网 时间:2024/05/23 15:07

最近在公司负责一个项目,是做一个编译器,大家可能知道,做编译器一般用C++或java,但是我的这个项目却使用了python来做这个编译器,很有挑战性。

我今天所讲的是在开发过程中,对使用python2.6语言的感受,目前这个项目已经完成三分之一了。

说实话,python并不适合做这样的项目。(虽然也能做)以下是总结了python相关特点:

1、python不支持do-while语句、goto语句和switch语句等。

2、python不支持多种构造方法的类型。

3、多重赋值机制与java和C不同。

4、因为没有类型声明,很多方法在调用时必须手写。

5、目前的python的IDE工具还不是很完善,跟早期java的IDE类似,特别是使用pyscripter每次修改后,不能重新导入更新的模块。

6、不支持变量的访问控制(例如private、public和protect)。

7、python可以动态的创建成员变量。

8、无限循环方式单一,只能是while True方式,这种for(;;)方式并不支持。

9、不提供常用的三元运算符,也不提供++和--这样的运算符。

10、字符串用+符号连接时不是很完善,特别是__str()__方法在某些场景使用的不是很方便。

11、python提供两种编码格式,如果考虑后期扩展,建议使用unicode编码。

12、python包结构比较繁琐,并且调用模块有先后顺序,而且__init__.py文件有一定的编写技巧。

13、因为是动态语言,所以在有些应用场景中,会加大后期维护、可读、可理解的难度,特别是变量没有类型声明,根据目前的IDE工具,而且python没有大括号之类的概念,很容易导致代码控制顺序错误。

14、python的核心思想万物皆是对象(包括变量、方法等),这个概念非常重要。

15、python的一些特性功能的使用必须掌握(如__doc__、__setitem__、__iter__、yield、__call__等,以"__"为前缀的方法),有助于提高开发速度。

16、python中and、or的处理方式与java和C++都不同。

17、python如果获取的KEY不在dict中,将会报Key Error异常,解决方式使用:x = true_value if condition else false_value 

 

 

 

下面主要是针对与第三点重点讲解:

 

class A:

     def __init__(self):

           self.next=None

 

class B:

     pass

 

上面定义了两个类A和B。

下面是一种方式运行:

if __name__=='__main__':

        b=B()

        a=A()

        a=a.next=b

 

 另一种方式运行:

if __name__=='__main__':

       b=B()

       a=A()

       a.next=b

       a=a.next

 

大家可以考虑下变量a等于什么,两种运行方式下,变量a的值都相等吗?

补充说明下,此时b是一个对象类型,那么将b变成基本类型,如:b=10,那么程序是否能够运行成功呢?

望大家自己亲自测试下,结果就不细说了。

 

 

最后说下,关于java程序员转成python程序员时,初期的代码编写会有java编程风格的影子,这需要一定的时间去适应python的编程风格。

提供一个python开发编码规范网址:http://wiki.woodpecker.org.cn/moin/PythonCodingRule