引言

  LZ之前其实一直对python都很好奇,只是苦于平时没有时间去了解它,因此趁着51假期这个机会,便迫不及待的开始了自己的探索。作为一个标准的Java程序猿,在了解python的过程当中,LZ遇到了很多囧事,接下来LZ就一一给大家说道说道。本文纯属看个乐子,非python教学。

囧事一:eclipse插件安装篇

  由于LZ习惯了使用eclipse进行开发,因此对python的研究,还是希望可以在eclipse上进行试验。那么第一件事,自然是安装python的eclipse插件,于是百度、google各种搜索引擎开始进入LZ的脑海。

  看着搜索结果,LZ不禁感叹大神们的厉害,原来如此简单,只需要像下面这样就可以。

  好吧,于是LZ开始等待...慢慢的,十分钟过去了,它依然没有反应...又十分钟过去了,是的,它依然没有反应,囧。

  半个小时之后,LZ终于忍不住了,开始选择第二种办法,离线安装。下载一个ZIP包,直接解压到eclipse的相应文件夹,于是pydev终于出现了。

  功夫不负有心人,它终于出现了,有点找到失散多年的妹妹的感觉。接下来的过程还比较顺利,下载python运行环境,将python.exe配置到相应的interpreter上面去即可。

  一个小时的折腾,LZ终于成功运行了那个具有划时代意义的程序,它叫“Hello World!”。

  

囧事二:变量声明篇

  既然“Hello World”已经成功,那么接下来的过程应该是非常顺利的。不过没想到的是,接下来发生的事,让LZ更加抓狂。最根本的原因就是LZ写下来了这样一个程序。

  它竟然报错了!大概意思LZ倒是看明白了,说字符串不能和int类型比较。于是LZ便将程序改成以下这样。

  它竟然编译错误了!最可悲的是,这提示有点牛B,LZ只能说“!&……#&!……@&#*……!@&#”。于是牛B的LZ想到了无敌的一招,就是下面这招。

  它竟然又报错了!强制类型转换都不好使了,这python还真不好搞。不过这时LZ灵机一动,看到了input()的用法,便比葫芦画瓢改了一下程序,结果它终于成功了。

  无敌的python果然与众不同,习惯与Java完全不同,当初研究C++的时候不能说是顺风顺水,但也算是手到擒来,因为两者在某种程度上还是比较相似的。不过这python就不一样了,很多用法都已经截然不同。

囧事三:连接mysql数据库

  完成了上面那个高端大气上档次的程序,LZ开始向新的目标前进。于是不自然的想到了数据库,LZ平时自己写Java程序都是使用mysql,于是也想使用python操作一下数据库。回想起Java操作mysql的方式,想必python也需要下载一个p包吧。

  不过结果有点出乎LZ的预料,竟然需要安装一个叫mysqldb的东西。这是什么玩意?于是LZ开始抱着必胜的决心寻找它,结果终于在某USA的网站找到了它,本来以为是个exe的安装包,结果却是一大堆文件,看起来还需要自己build的节奏,这让LZ有点慌了神。

  不要慌,下载下来再说。于是得到了下面这样一个东西。

  幸好这玩意看起来还不是那么的难理解,想必应该是需要使用python解释器去执行setup.py就可以。最后发现,还需要加入一个build的参数。于是LZ便开始执行命令,结果得到了下面的错误。

  其实在得到这个错误之前,LZ已经得到了很多错误,一开始是一个编译错误,LZ修改了setup_windows.py文件。后来又是一个导入module的错误,LZ又修改了setup_common.py文件。

  直到得到这个错误以后,无论LZ如何猜测,都没有解决这个问题。因为它报错的地方是在python的lib文件当中,而不是mysqldb的文件。一时之间,LZ有点慌乱了,开始求助最后的大神google。不过结果依旧失败,往往在最后关头能帮助LZ的google,今天看来也不好使了。

  这可怎么办?LZ猜测这种错误很可能是版本引起的问题,因为LZ隐约记得LZ下载的叫mysqldb2,可是LZ使用的是python3啊。会不会跟这个有关系呢?

  说干就干,在百度输入mysql python3的关键字,最终还是让LZ找到了一丝蛛丝马迹,有一个地址叫mysql for python3。这是一个github的地址,LZ果断用git将这个下载下来。仔细一看,它的目录与刚才那个mysqldb2如出一辙,但其实仔细看,也有少许不同。

  不管它了,管它哪里不同呢,继续执行刚才的命令。果然,这一次虽然有很多警告,但是build成功了。接着就是install,不出所料,依然还是成功,这让LZ欣喜万分。浪费了差不多一个小时,终于搞定了。

  于是迫不及待的在eclipse当中输入一个标准的程序,来验证一下LZ的mysqldb是否安装成功了。可是没想到的是,它依然报错了。

  从错误提示上来看,就像Java一样,是刚才安装的mysqldb没有被成功引入。于是LZ想到了在配置python解释器的时候,有一大堆东西让LZ选择,而刚才install的时候,就是在Lib下面安装了一个mysqlXXX的东西。于是LZ就找到了这里。

  这下LZ的程序终于编译通过了,怀着激动的心情,LZ选择了python run,结果令人振奋。

  终于打印出来了,这里面的数据就是LZ自己的mysql数据库当中存储的。到此,LZ短期对python的研究就暂时告一段落了,以后如果有机会的话,LZ会用python写一些实用的小工具,以便于自己在平时的工作当中使用。

小结

  现在说来简单,其实在真正尝试的过程当中,还是遇到了不少问题。主要原因也和LZ想在windows下使用python有关系,这个时候就体现出linux的优势了,在linux上安装一些东西,总是那么的轻松。

  这本来只是一篇流水文,不过LZ在这里还是想说,很多猿友在研究一些东西的时候,遇到困难就退缩了。到了最后,大部分人都会情不自禁的打开11GAME的快捷方式麻痹自己,从此无法自拔。但其实有的时候,只要你再往前一小步,就可以看到胜利了。最重要的是,这可以锻炼你解决问题的能力,因为在工作当中,很多事情都是你克服了无数奇葩的问题才得以解决的。

人在囧途——Java程序猿学习Python的更多相关文章

  1. 回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议

    引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...

  2. Java程序猿学习当中各个阶段的建议

    回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议   引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的 ...

  3. 顺便谈谈对于Java程序猿学习当中各个阶段的建议

    引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...

  4. 【Python】Java程序员学习Python(五)— 函数的定义和使用

    不想做一个待宰的羔羊!!!!要自己变得强大.... 函数的定义和使用放在最前边还是有原因的,现在语言趋于通用,基本类型基本都是那些,重点还是学习对象的使用方法,而最根本的还是方法的使用,因此优先介绍, ...

  5. Java程序猿学习的建议(转)

    第一部分:对于尚未做过Java工作的同学,包括一些在校生以及刚准备转行Java的同学. 一.Java基础 首先去找一个Java的基础教程学一下,这里可以推荐一个地址,或者你也可以参照这个地址上去找相应 ...

  6. 【Python】Java程序员学习Python(二)— 开发环境搭建

    巧妇难为无米之炊,我最爱的还是鸡蛋羹,因为我和鸡蛋羹有段不能说的秘密. 不管学啥,都要有环境,对于程序员来说搭建个开发环境应该不是什么难题.按顺序一步步来就可以,我也只是记录我的安装过程,你也可以滴. ...

  7. 【Python】Java程序员学习Python(六)— 流程控制、异常处理

    和Java语言一样,Python也有基本的流程控制,简单了解下即可. 一.流程控制的元素 条件 条件就是布尔值或者布尔值的表达式,要么是True要么是False. 代码块 在Python中,代码块不是 ...

  8. 【Python】Java程序员学习Python(三)— 基础入门

    一闪一闪亮晶晶,满天都是小星星,挂在天上放光明,好像许多小眼睛.不要问我为什么喜欢这首歌,我不会告诉你是因为有人用口琴吹给我听. 一.Python学习文档与资料 一般来说文档的资料总是最权威,最全面的 ...

  9. 【Python】Java程序员学习Python(十)— 类、包和模块

    我觉得学习到现在应该得掌握Python的OOP编程了,但是现在还没有应用到,先留一个坑. 一.类和对象 说到类和对象其实就是在说面向对象编程,学完Java以后我觉得面向对象编程还是很不错的,首先封装了 ...

随机推荐

  1. rman恢复方案和oracle异机恢复

    这篇文章主要介绍了rman恢复方案和oracle异机恢复,需要的朋友可以参考下 注:①恢复的前提是已经做好备份②完全恢复数据库是数据库遇到故障,在恢复时候没有丢失任何已经提交事物数据的恢复不完全恢复数 ...

  2. ORACLE分区表操作

    ORACLE分区表的操作应用 摘要:在大量业务数据处理的项目中,可以考虑使用分区表来提高应用系统的性能并方便数据管理,本文详细介绍了分区表的使用. 在大型的企业应用或企业级的数据库应用中,要处理的数据 ...

  3. fun() 的 拆分和 for 遍历 的结合---------> 函数容器

    fun() 的 拆分和 for 遍历 的结合--------->  函数容器

  4. 使用github客户端上传文件(瓜皮教程)

    因为栋哥的课才接触道github这个东西,离第一次接触大概有一年左右了吧,记得不是太清楚了,但是,直到前几天前我还是不知道如何配置,利用git上传文件,之前也是叫同学帮忙弄得,但是这次软工实践要频繁用 ...

  5. 全局唯一Id:雪花算法

    雪花算法-snowflake 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的. 有 ...

  6. Day4 JavaScript(二)dom操作

    dom(文档对象模型) 文档结构 文档加载,转换为文档对象模型.将所有的标签,文本,属性转换为dom节点,形成一棵dom树. 标签,元素,节点: <a> 标签开始到结束的部分 标签,文本, ...

  7. 20155314 2016-2017-2 《Java程序设计》实验四 Android程序设计

    20155314 2016-2017-2 <Java程序设计>实验四 Android程序设计 实验任务 基于Android Studio开发简单的Android应用并部署测试 了解Andr ...

  8. js中使用trim

    function trim(s) { return trimRight(trimLeft(s)); } //去掉左边的空白 function trimLeft(s) { if (s == null) ...

  9. nuxt 脚手架创建nuxt项目中不支持es6语法的解决方案

    node本身并不支持es6语法,我们通常在vue项目中使用es6语法,是因为,我们使用babel做过处理, 为了让项目支持es6语法,我们必须同时使用babel 去启动我们的程序,所以再启动程序中加 ...

  10. 常用命令 tcl & shell

    TCL 常用命令: 1. 当前时间  [exec  date  +%m%d_%H%M]   (实际是调用shell命令 date),比如在 icc 中保存cell 时可以用:save_mw_cel   ...