人在囧途——Java程序猿学习Python
引言
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的更多相关文章
- 回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议
引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...
- Java程序猿学习当中各个阶段的建议
回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议 引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的 ...
- 顺便谈谈对于Java程序猿学习当中各个阶段的建议
引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...
- 【Python】Java程序员学习Python(五)— 函数的定义和使用
不想做一个待宰的羔羊!!!!要自己变得强大.... 函数的定义和使用放在最前边还是有原因的,现在语言趋于通用,基本类型基本都是那些,重点还是学习对象的使用方法,而最根本的还是方法的使用,因此优先介绍, ...
- Java程序猿学习的建议(转)
第一部分:对于尚未做过Java工作的同学,包括一些在校生以及刚准备转行Java的同学. 一.Java基础 首先去找一个Java的基础教程学一下,这里可以推荐一个地址,或者你也可以参照这个地址上去找相应 ...
- 【Python】Java程序员学习Python(二)— 开发环境搭建
巧妇难为无米之炊,我最爱的还是鸡蛋羹,因为我和鸡蛋羹有段不能说的秘密. 不管学啥,都要有环境,对于程序员来说搭建个开发环境应该不是什么难题.按顺序一步步来就可以,我也只是记录我的安装过程,你也可以滴. ...
- 【Python】Java程序员学习Python(六)— 流程控制、异常处理
和Java语言一样,Python也有基本的流程控制,简单了解下即可. 一.流程控制的元素 条件 条件就是布尔值或者布尔值的表达式,要么是True要么是False. 代码块 在Python中,代码块不是 ...
- 【Python】Java程序员学习Python(三)— 基础入门
一闪一闪亮晶晶,满天都是小星星,挂在天上放光明,好像许多小眼睛.不要问我为什么喜欢这首歌,我不会告诉你是因为有人用口琴吹给我听. 一.Python学习文档与资料 一般来说文档的资料总是最权威,最全面的 ...
- 【Python】Java程序员学习Python(十)— 类、包和模块
我觉得学习到现在应该得掌握Python的OOP编程了,但是现在还没有应用到,先留一个坑. 一.类和对象 说到类和对象其实就是在说面向对象编程,学完Java以后我觉得面向对象编程还是很不错的,首先封装了 ...
随机推荐
- fiddler post 请求 webapi
今天小伙伴遇到一个问题,大概就是说用fiddler post 一个参数,但是后台一直无法获取,如下 后来发现请求的条件有问题,而且也很容易忽略,正确如下 content-type的设定为默认值,pos ...
- 安装mysql中遇到的问题1
我的debian7之前安装了mysql-server,是通过apt安装的,后来我卸载掉, 然后用whereis mysql查找, 把所有关于mysql的目录删除掉,包括带mysqld的目录及文件. 重 ...
- python第十四课--排序及自定义函数之案例二:冒泡排序
案例二:冒泡排序 lt1=[45,12,56,-32,-3,44,75,-22,100] print('排序前:'+str(lt1)) 自定义函数:实现冒泡排序(升序)原则:1).有没有形参?有,接受 ...
- Yii安装使用教程(转)
Yii 是一个基于组件的高性能 PHP 框架,用于快速开发大型 Web 应用.它使Web开发中的 可复用度最大化,可以显著提高你的Web应用开发速度.Yii 这个名字(读作易(Yee) 或 [ji:] ...
- 根据经纬度获取位置描述:百度API与高德API的区别
百度API 使用百度坐标 1.访问方式一 http://api.map.baidu.com/geocoder/v2/?location=35.063592,118.38513&output=j ...
- model 在线生成工具
记录一个在线的model生成工具 快捷开发 so easy http://modelend.com
- Test随笔
测试一级主题 测试二级主题 测试内容,修改会不会出现历史记录
- Spring源码分析(八)AbstractBeanDefinition属性
摘要:本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 在上一篇中已经完成了XML文档到GenericBeanDefiniton ...
- 愤怒的小鸟【$DP$优化】
卡常的状压\(DP\),愤怒的小鸟. 其实本来是个很水的状压\(DP\),但因为最后三个点\(n=18\),成功地把我的不可能达到的下界为\(\Omega(2^nn^2)\),紧确的上界为\(O(2^ ...
- K2使用Nginx做负载均衡
K2使用Nginx做负载均衡 K2目前是支持Load Balancing这种方式,来做负载均衡,也可以使用F5来做负载均衡,但这次我使用nginx来实现K2的负载均衡 下载nginx 请下载nginx ...