论坛首页 编程语言技术论坛

java 与 python (1)

浏览 6582 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2009-06-07   最后修改:2009-06-07

 

一直想对前段时间学习python 做个总结,以免自己太快忘记.我这个人忘性很大,所以只有不停的总结与回顾来尽量减缓大脑的遗忘程度.

首先贴上dive to python 的一段话:

 

静态类型语言
一种在编译期间就确定数据类型的语言。大多数静态类型语言是通过要求在使用任一变量之前声明其数据类型来保证这一点的。JavaC是静态类型语言。
动态类型语言
一种在运行期间才去确定数据类型的语言,与静态类型相反。VBScriptPython是动态类型的,因为它们确定一个变量的类型是在您第一次给它赋值的时候。
强类型语言
一种总是强制类型定义的语言。JavaPython是强制类型定义的。您有一个整数,如果不明确地进行转换 ,不能将把它当成一个字符串。
弱类型语言
一种类型可以被忽略的语言,与强类型相反。VBScript是弱类型的。在VBScript中,您可以将字符串'12'和整数3进行连接得到字符串'123',然后可以把它看成整数123,所有这些都不需要任何的显示转换。

所以说Python既是动态类型语言(因为它不使用显示数据类型声明),又是强类型语言(因为只要一个变量获得了一个数据类型,它实际上就一直是这个类型了)。

现在总的趋势语言都在向动态语言类型靠近,这的确大大方便了程序员,使得编写程序更方便,效率更高,动态语言你不必关心变量的类型.java也可以达到一定程度的动态识别.比如多态,但你必须要有继承关系,还有反射,繁琐并且效率低,如果使用python,这些方面的问题就很容易解决了.
下面我就细化的总结下python的优点:
1)函数
在函数方面python是做的比较好的,好的地方主要在支持默认参数和关键参数.
简单例子:
调用function_test(1) ,结果 1, 3, 5
调用function_test(1,c=2,b=3) 结果 1,3,2
2)集合
显然在集合方面python也有很大的优势.操作简便,集合类可以放不同类型的元素.
集合在python中分为:dictionary.list.tuple,操作非常的方便.
想想在java里如果要篇历一个map的key ,value是多么的麻烦.但是在python中
一句搞定.
"|".join(["%s=%s" % (k, v) for k, v in params.items()])
params是一个字典.params.items()返回这个字典的key,value ,每个key,value为一个元组.k,v
3)一次赋多值
这是个很方便的功能,可以一次给多个变量赋值,有些时候是非常有用的
调用mulequ(),结果是(0, 1, 2)
4)映射list
这是Python对于list提供的非常强大的方法,可以对list进行解析.并且映射为另一个list.
结果是 2,4,6,8,10
to becontinued......
   发表时间:2009-06-08  
好像没有java的多少东西,建议改成python笔记……之类的
0 请登录后投票
   发表时间:2009-06-08  
python恐怕是最不用系统学习的一门语言。。
0 请登录后投票
   发表时间:2009-06-14  
"|".join(["%s=%s" % (k, v) for k, v in params.items()])

groovy 可以用:

params.collect {k,v->"$k=$v"}.join("|")
0 请登录后投票
   发表时间:2009-06-15  
(one,two,three) =  range(3)
groovy 可以用:
(one,two,three) =  [0,1,2]

li=[1,2,3,4,5] 
li_1 = [element*2 for element in  li] 
groovy 可以用:
li_1 = li.collect{it*2}
0 请登录后投票
   发表时间:2009-10-20  
kakashi 写道

2)集合

显然在集合方面python也有很大的优势.操作简便,集合类可以放不同类型的元素.
集合在python中分为:dictionary.list.tuple,操作非常的方便.
想想在java里如果要篇历一个map的key ,value是多么的麻烦.但是在python中
一句搞定.
"|".join(["%s=%s" % (k, v) for k, v in params.items()])
params是一个字典.params.items()返回这个字典的key,value ,每个key,value为一个元组.k,v
"|".join(["%s=%s" % i for i in params.items()])

 这样就行了

lz你把tuple解析出来又组合了一遍

 

0 请登录后投票
   发表时间:2009-10-23   最后修改:2009-10-23
mathgl 写道
python恐怕是最不用系统学习的一门语言。。

其实还是需要系统学习,不然你只是懂得一些比较基本的东西,懂python的一些数据结构,稍微深入一点就不知道了。。

我在python list上还见过有人用django用了一年多,却不知道__init__.py有什作用。。有些人还弄混and 和 or,所以无论哪门语言,还是需要系统学习下比较好。

0 请登录后投票
   发表时间:2009-10-23  
语言是工具的一种,用来完成任务。任务的难易很多时候决定了研究的深度。当然有些人喜欢研究工具本身是另当别论。

我的同事很多用C++, 但是你要问他们boost里面的实现怎么回事,有大半都回答不上,但是这并不影响他们的工作。
0 请登录后投票
   发表时间:2009-10-24  
mathgl 写道
语言是工具的一种,用来完成任务。任务的难易很多时候决定了研究的深度。当然有些人喜欢研究工具本身是另当别论。

我的同事很多用C++, 但是你要问他们boost里面的实现怎么回事,有大半都回答不上,但是这并不影响他们的工作。


你的意思就是你对完成工作比对“怎么样完成”更感兴趣。
0 请登录后投票
   发表时间:2009-10-25  
别跑题了……

我在熬夜看python的一本书……

groovy做脚本,速度太慢了,linux/win下都是,语法糖方面的我不是那么关心,特性大家都有,少些多谢一点代码区别不大。

grails部署到app server下估计性能和php/python *** 跑在pc上差不多……(虽然java很快)
有点不喜欢这些大公司把java更多地作为收利工具……
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics