《python核心编程》翻了大半,感觉python真的是一门很有意思的语言,它综合了我之前接触过的C#,javascript,vbScript等解释型语言和编译语言的优点,相对于之前接触过的解释型语言,它在面向对象编程方面更有优势。
1.数据类型。与C#不同的是,Python不区分值类型和引用类型,你可以把所有的类型都理解为C#的引用类型(当然,它们的实现方式是不一样的,这里只是一个类比)。但是这里的引用类型在参数传递时却不一定就是引用传递,很奇怪这一点。我做了个实验,代码如下:
defadd(num):
num=num+10d=2add(d)printd
这段代码的输出结果为2,也就是说在这里它相当于值传递。这点有点费解,继续研究中。
中的数组。在C#中,声明数组时必须要声明数据类型,但在python中不用,它也是一个强类型的语言,但又是动态类型。这个小小的差异,却带来了很大的便利,在一个数组中可以存入多种数据类型的元素,并且在取出时也不用装箱拆箱。
3.入口程序,这个是我接触到的第一个比较大的差别,C#语言是完全面向对象,以类来组织的,而每一个类都心必须有一个入口程序,比如page_load、main函数,而python和其它的解释型语言一样都没有入口程序,它的执行主要依赖于它所在的文件,在这个文件中从上向下依次执行,以前用过的javascript,asp等都是这样。
的语言可以像将一段文本做为代码执行,就像javascript中的eval()函数执行代码一样。比如用ajax异步从服务器获取一段js代码并用eval()函数执行
5.函数默认参数
发现这个也是很折腾人的东西。因为和C#的确有不少的区别
1:Python的函数可以定义默认值,这个感觉像MSSQL的存储过程,还是有不小的实用价值的
2:Python的函数还可以使用关键字参数
defGet(name,id,age)passGet(name='333',id=1,age=444)
引用书中的说法
“这样做有两个 优势 ——一,由于我们不必担心参数的顺序,使用函数变得更加简单了。二、假设其他参数都有默认值,我们可以只给我们想要的那些参数赋值。”,这一点,的确比 C#方便不少。
6.函数的可变参数或者称数组参数。这一点也与javascript中的参数特性类似,并且它在这方面比js更加完美,可以把一个无组(非关键字参数)或字典(关键字参数)作为参数组传递给函数。字典参数是js不具备的。
IN 形式的循环
这个也很有意思,我发现在Python中已经没有了以前学习的语言中的 for(int i;i
8.关于类的继承。与c#最大的区别,在C#中一个子类只可以继承自一个父类,或者多个接口,但在python中子类可以继承多个基类,这一点,有好处,却也带来了方法解释顺序的问题,这个也挺有意思。
发表于
2010-03-15 10:52
深蓝--广州
阅读(20846)
评论(3)
编辑
收藏