`
xukong
  • 浏览: 34772 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

从实际工作需要与经历说说我选择PYTHON的原因(附相关源代码)

 
阅读更多
    从实际工作经历中说说我选择python的原因

    这两天看到有人问为什么好多大公司为什么选择PYTHON,大公司有大公司的考虑,这里只是说说我从实际工作中碰到问题解决后的选择.
   
    呵,呵,我是蛮羡慕RUBY有个很流行的WEB开发框架,也挺有兴趣学习,WEB敏捷开发之道的一二版和programing ruby第2版也买了,可惜因为在的公司进行的都是企业开发,基本上都用JAVA,不能实际应用RAILS,那就当个人兴趣爱好学习了.

    去年有次我负责的一个项目需要处理几个文本文件出话单和联通对帐,每个话单文件的处理条数大概是150到200万条,那时候对ruby也有些了解了,脚本语言上手还是挺快的,就用RUBY写了个小程序,花了天把完成任务,记不清当时为什么又用PYTHON来写了个程序来比较,可能是因为这两个脚本语言都比较有名,想多了解比较下的原因吧.

    这个程序牵涉到的就是字符串比较和文件读写.(惭愧惭愧,处理时间有差距,但没有我以前说的那么巨大,因为我写的RUBY代码不够高效,有同学改进后的代码提升到3倍以内,详见后帖)
  
    跑程序的机子是台IBM的X60,使用的CPU是T5600,1.8G的,内存是2G,硬盘100G,操作系统是 XP+sp3 , ruby 是一键安装的 1.8.6 吧(今天装的是 1.8.6-27) , python 当时是 2.5.2 今天我用的是(2.6.2),因为准备写这篇帖子,原来的话单文件又比较大,上百M和牵涉到手机号码,就写了个python程序,来生成测试用的话单.

    我当时是先写了RUBY,然后按RUBY的写法,又再写了个PYTHON,代码几乎都是一模一样的,也没有考虑什么优化啊编程技巧啊这些,数据需要怎么处理,就用语言提供的数据类型和进行最基本的操作,反正只是个小程序,用了就完了,而且写个脚本程序都要搞很高深的编程技巧,优化技巧,这不就有些为难不是专业人士,就想用脚本程序解决下问题的人了吗?

    今天的测试结果:
    测试120万条记录,PYTHON跑了40多秒.
    200万记录的测试,python跑了55秒.

    我平时工作中会经常需要写小程序解决问题,经常牵涉到全省手机号码的处理,一处理就是几十上百万的记录条数,你要说RUBY慢到我不能忍受的地步,也不至于,不过毕竟都喜欢跑得快的程序不是,而且ruby最吸引我的WEB开发,因为工作关系,不能轻易用,平时还是写些小程序处理网络,处理文件用得多些.   

    所以我最后还是选择了PYTHON,web开发因为工作原因还是用JAVA.

    程序代码就贴在下面,压缩包里是所有的相关源文件
   
    执行 MakeTestData.py 指定数字 生成指定数字条数的话单,比如 MakeTestDagta.py 1200000 就生成120万条数据,里面的数据没有任何意义,就是为了达到测试量的数据而已,为了方便,发送和接收数据都设置为指定数据的一半.

    然后执行 RunPyTest.bat 或 RunRbTest.bat 进行相关的运行测试,运行完后报告运行时间.
   
    我是希望有人能指点为什么我写的ruby程序比python慢了挺多的,不说又会换回ruby,长长经验也是个好事情嘛...

    我刚才又测试了一下,100万条数据,环境如上,跑了10次,结果还是一样,100万条数据的测试结果python 27,要说明下大部分ruby的时间是花在了写结果文件上,看来是IO读写拖了后腿,内存之中的运行应该差不多?(有时间再比较下)不过我这个程序正好碰到了大量的文件读写,我的标题应该改下了,只是有一定的差距...

   去掉最后的文件写入,差异也是比较巨大的,PYTHON 10 秒, RUBY 80 秒..测试记录是100万条(去掉最后的文件写入后的代码比较简单,还是有这个差异,要继续寻找答案,呵...)

    好象也不算是拖后腿,ruby python 都是用了2/3的时间来写结果文件
   
    我注释掉rb中对format_data的调用,直接赋予'',rb后面的写文件就很快了,那就是字符串操作...?
   
   下面是python处理的代码:
    
     数据处理要求是这样的,分3大步:
     1.有一个等待发送状态报告文件来匹配数据的文件,里面包含得有
     移动发往联通
     wait-status.csv 中第一个字段为3
     和
     联通发往移动
     wait-status.csv 中第一个字段为4
     的所有记录
     首先读取等待状态报告文件中的数据到哈希表中去,根据第一个字段为3或者4取不同的字段作为key放入到2个不同的(发送和接收)哈希表中
    
     2.然后读取状态报告文件 status.csv 的每一行,根据第一个字段作为KEY尝试去取2个哈希表中的数据,
     取得到数据就根据是从哪个哈希表中取出的分别放到2个不同的数组(发送和接收)中去
      取不到就丢弃

     3.然后把这2个不同的数组中的每条数据转换组合后写到文件中(发送GMO,接收GMT)去就OK了
   

分享到:
评论
87 楼 Xorcerer 2009-05-05  
xukong 写道
呵, Xorcerer 的帖子我好多是有看没有懂...

不过我已经回答我看懂的了...

大家讨论的时候,特别是发帖人的不足会被一一指出,无一错漏,这很正常,反正大家也看到,也不存在狡辩,有理有据的,接受,或者公说公有理的,那就再论,呵,如果大家有闲有兴趣的话...


看Hooopo的就足够了。
我上一个回帖的话,只是希望你不要把习惯,性能,可读性揉在一起说。
别人说这样性能不好,你就说你习惯了,
别人说这是Ruby一般用户的习惯,你就说这样可读性不好,
别人说这样对于Ruby一般用户来说可读性较好,你却说这样性能有问题,
......
总有理由,却没有一个确定的立足点。

其他朋友已经直接或者间接地提到这个问题,我只是直白一点罢了。

比如,你说!不舒服,而你更倾向于Python,那么我就提到了,Python用的not,其实很直观;
而前面Hooopo也说了,object.nil?这个方法是Ruby的惯例(我开始也忘了);
至于Ruby是不是太无聊,居然用一个方法代替 object == nil,就是个编程哲学问题的,你高兴就好。
就如为什么Java不是Ruby这类的问题。

我也总是忘记str.empty?之类的方法,但我至少知道用它有利于其他Ruby用户的理解,至少知道我忘记这个不好。

可读性针对那个语言的一般用户的而言的,否则的话,就无所谓可读性了;
习惯是针对自己的。

请原谅我的直白,也请相信我没有恶意。
86 楼 xukong 2009-05-05  

呵,谢谢 RednaxelaFX 点拨,RSS我试试...
85 楼 xukong 2009-05-05  
呵, Xorcerer 的帖子我好多是有看没有懂...

不过我已经回答我看懂的了...

大家讨论的时候,特别是发帖人的不足会被一一指出,无一错漏,这很正常,反正大家也看到,也不存在狡辩,有理有据的,接受,或者公说公有理的,那就再论,呵,如果大家有闲有兴趣的话...
84 楼 RednaxelaFX 2009-05-05  
xukong 写道
    呵,谢谢支持,这里分享下如何监视JAVAEYE回复更新的一些心得:

    难得写篇帖子,就时不时的用浏览器来打开网页刷新下看有什么回复没有 但是这样操作多了也累,就找了下监视网页的软件,有个叫 specto 的软件,是用PYTHON写的,有点兴趣,结果一看是只能跑在LINUX下,虽说LINUX不错,但是工作环境是WIN啊,还是继续找,发现了个 urly warning 的软件,免费的,最新是 3.0

话说JavaEye提供了丰富的RSS,直接抓自己的更新的RSS就能跟踪帖子回复的更新了。

至于楼主的代码……
我觉得楼主大可以保持自己的观点。代码是写给自己读,写给电脑执行的。如果自己读不懂自己的代码显然会有问题,至于别人读得读不懂、读得读不顺,呵呵……
而且根据自己的能力去选用合适的工具没任何错误。等熟悉了别的工具的惯用法再换用别的工具也未尝不可。
要说的话,像是拧螺丝,本来用一把螺丝刀去拧就行,但只熟悉钳子的用法的人决定用两把螺丝刀去夹着螺丝来拧,自然是比不上用熟悉的钳子来得顺手和便捷。在一种语言里很自然的代码换到另一种语言里很可能很不自然,强调源码的相似性正好掉进了这陷阱里。

楼主发现Ruby里nil在用于逻辑判断时是假值了,而Python里的None也是假值,差不了多少。
83 楼 Xorcerer 2009-05-05  
xukong 写道
判断简单的为真为假我才会用 if (result_search) 而且要是确切的布尔型

但我现在判断的是否为空值,在这种情况下我从来没有用过上面的写法

一般认为非0值才是为真,NIL确实算得上是0之外,但是实际上NIL是什么都没有,我不习惯将什么都没有当作真,一定要有个值哪怕是真是假,是正是负,还是有值的什么任何类型

下面的代码证实了我的想发,NIL不为真

fwdsendwaitstatus = Hash.new()

k = "1"
x = k
fwdsendwaitstatus[k] = x

k = "2"
result_search = fwdsendwaitstatus[k]

if (result_search == nil)
    puts "result_search == nil"
end

if (result_search)
    puts "result_search == nil is true, yes yes yes"
else
    puts "result_search == nil is true, no no no"
end


我写成 if (result_search == nil)  是当为空时要做什么事
如果写成你所说的 if (result_search)
最终什么都做不成...

呵,挡箭牌,我只是有点不自甘菲薄而已...

倒霉,没有注意到那个!,我最不喜欢用的就是!,一不小心会看漏掉,直观的东西还要反过来再想,要做2道思考...

仔细想了下,还是觉得蛮怪的 if (!result_search) 做非空操作来判断它是空为真(为什么不直接判断它是空,非要多手多脚做个非空为真操作来判段它是空,从性能上考虑就多了个无端端的!非操作)后才做当 result_search 为空时的操作

呵,说是挡箭牌就挡箭牌牌吧,楼上的可能觉得if (!result_search)代码少,觉得优雅,不过我还是喜欢 if (result_search == nil) 的习惯...


楼主在这个问题上提到了性能,同时用性能,可读性和习惯来维护自己的观点。

关于可读性,
用楼主偏爱的Python的话,!就是not,跟VB一样,比起!清晰多了。
Ruby还有一个unless,其实就是if not (if !),据说,为的就是提高可读性,
unless (result_search) 等价于 if (!result_search)
对于unless存在的意义,我不做评论。

又及:我终于知道那本《Ruby on Rails敏捷开发最佳实践》的读者群了。
82 楼 Xorcerer 2009-05-05  
七猫 写道
第二种可以让人家知道这是个bool变量,而第一个也许只是!=NULL

# if (Checked) //第一种写法; 
# if (Checked == true) //第二种写法;

前面提到了,这是Java。
81 楼 charon 2009-05-05  
Hooopo 写道
xukong 写道


另外看了改进后的RUBY,有点小寒,不是对RUBY有点了解的,有些符号操作就看不懂了,当然不懂就不乱用,也不要乱发表评论,这个我是吸取教训了(不过我也只是常规写法啊,谁想到会有这么大差距,关键是2个代码都几乎一样,结果不一样,就有点被迷惑,想当然了),不过要吸引同事,初期还是: 嘿,我这个程序跑得还比较快,也不太难看懂,有兴趣学下没有,呵,呵...

真不知道楼主怎么想的,您一次又一次的强调代码一样

代码一样能说明什么问题呢?

如果您说您是初学者这样说有情可原,可是,,前面您又说自己写了10程序,也写过省级项目。。。


这个不矛盾啊。
写了10年程序,用的估计是java,但对ruby和python来说都是初学者。


80 楼 xukong 2009-05-05  
哎,后面还有

代码中也并没有用什么独有的数据类型和相关操作(就是哈希表,数组,简单的字符串操作,文件读写,呵,一般好象也就用到这些也能解决大多数问题了这些最常用到的要用特别的语句调用才能有效果?),我功力不够,不知道是怎么回事,就上来发表请大家指点下

说明这2个语言的内部操作实现不同呗,也许有的更好一些吧...我的水平只能让我这么想

呵,我对RUBY,PYTHON确实是初学者...
79 楼 Hooopo 2009-05-05  
xukong 写道


另外看了改进后的RUBY,有点小寒,不是对RUBY有点了解的,有些符号操作就看不懂了,当然不懂就不乱用,也不要乱发表评论,这个我是吸取教训了(不过我也只是常规写法啊,谁想到会有这么大差距,关键是2个代码都几乎一样,结果不一样,就有点被迷惑,想当然了),不过要吸引同事,初期还是: 嘿,我这个程序跑得还比较快,也不太难看懂,有兴趣学下没有,呵,呵...

真不知道楼主怎么想的,您一次又一次的强调代码一样

代码一样能说明什么问题呢?

如果您说您是初学者这样说有情可原,可是,,前面您又说自己写了10程序,也写过省级项目。。。
78 楼 malk 2009-05-05  
楼主参见programming ruby第五章 标准类型。。。。。。
77 楼 xukong 2009-05-05  
呵,我本来想改的,不过想到这是自己的真实思路,就没有改

我以前理解NULL,真假值之间是看懂书本上的,实际用好了就没有管了,今天只是实际验证下自己一贯的思路是正确的,如此而已,谁以为自己抓住了什么就抓住了什么吧,呵...

if (result_search == nil)别人都贴出代码来了,你说我讨论什么

代码我是写多了,不过我不习惯无中生有,代码中操作到空要避免,所以没有显示操作空的习惯

至于说到!,我不习惯多手多脚,所以是不会使用 if (!nil) 的语句去判断空的

if result_search.nil? 我没有用过

if (result_search == nil) 这个语句,这个概念在大多数常用语言中应该是通用的,我也不想改变到特殊的语法,至于会被说不够RUBY,认了...
76 楼 Hooopo 2009-05-05  
判断简单的为真为假我才会用 if (result_search) 而且要是确切的布尔型

引用
但我现在判断的是否为空值,在这种情况下我从来没有用过上面的写法

你是要说是否为nil吧?什么叫是否为空值?ruby中nil,empty,undefined是三个不同的概念。说的清楚点好吗?

引用
一般认为非0值才是为真,NIL确实算得上是0之外,但是实际上NIL是什么都没有,我不习惯将什么都没有当作真,一定要有个值哪怕是真是假,是正是负,还是有值的什么任何类型

什么叫一般认为非0值才是真,麻烦看看ruby的语法再说好不好?怎么还扯上0了?ruby中只有nil和false为假,其余都为真,不管是0还是“”。。。

引用
下面的代码证实了我的想发,NIL不为真

楼主,恭喜你,你发现了一个惊天秘密!!


引用
fwdsendwaitstatus = Hash.new()

k = "1"
x = k
fwdsendwaitstatus[k] = x

k = "2"
result_search = fwdsendwaitstatus[k]

if (result_search == nil)
    puts "result_search == nil"
end

if (result_search)
    puts "result_search == nil is true, yes yes yes"
else
    puts "result_search == nil is true, no no no"
end

证明一个nil为假这样的问题用得着这样吗?
if nil
 puts "no"
else
 puts "yes"
end


引用
我写成 if (result_search == nil)  是当为空时要做什么事
如果写成你所说的 if (result_search)
最终什么都做不成...

呵,挡箭牌,我只是有点不自甘菲薄而已...

倒霉,没有注意到那个!,我最不喜欢用的就是!,一不小心会看漏掉,直观的东西还要反过来再想,要做2道思考...

仔细想了下,还是觉得蛮怪的 if (!result_search) 做非空转换判断后来做当 result_search 为空时的操作

呵,说是挡箭牌就挡箭牌牌吧,我还是喜欢 if (result_search == nil) 的习惯...

怕漏掉!?这样啊:
!!!result_search还看不见可以!!!!!result_search呵呵,这个娱乐。。
ruby里习惯用法是这样的:if result_search.nil?


最后说一句,拿习惯当挡箭牌也行,但是基本语法要知道吧?
75 楼 xukong 2009-05-05  
判断简单的为真为假我才会用 if (result_search) 而且要是确切的布尔型

但我现在判断的是否为空值,在这种情况下我从来没有用过上面的写法

一般认为非0值才是为真,NIL确实算得上是0之外,但是实际上NIL是什么都没有,我不习惯将什么都没有当作真,一定要有个值哪怕是真是假,是正是负,还是有值的什么任何类型

下面的代码证实了我的想发,NIL不为真

fwdsendwaitstatus = Hash.new()

k = "1"
x = k
fwdsendwaitstatus[k] = x

k = "2"
result_search = fwdsendwaitstatus[k]

if (result_search == nil)
    puts "result_search == nil"
end

if (result_search)
    puts "result_search == nil is true, yes yes yes"
else
    puts "result_search == nil is true, no no no"
end


我写成 if (result_search == nil)  是当为空时要做什么事
如果写成你所说的 if (result_search)
最终什么都做不成...

呵,挡箭牌,我只是有点不自甘菲薄而已...

倒霉,没有注意到那个!,我最不喜欢用的就是!,一不小心会看漏掉,直观的东西还要反过来再想,要做2道思考...

仔细想了下,还是觉得蛮怪的 if (!result_search) 做非空操作来判断它是空为真(为什么不直接判断它是空,非要多手多脚做个非空为真操作来判段它是空,从性能上考虑就多了个无端端的!非操作)后才做当 result_search 为空时的操作

呵,说是挡箭牌就挡箭牌牌吧,楼上的可能觉得if (!result_search)代码少,觉得优雅,不过我还是喜欢 if (result_search == nil) 的习惯...
74 楼 七猫 2009-05-05  
第二种可以让人家知道这是个bool变量,而第一个也许只是!=NULL

# if (Checked) //第一种写法; 
# if (Checked == true) //第二种写法;
73 楼 Xorcerer 2009-05-05  
xukong 写道

if (result_search == nil)

有什么不对?变量名取长了?我写的代码变量名确实比较长,个人习惯,总比A,B,C好吧
哦,我查了下,看到这篇帖子 http://www.ruby-lang.org.cn/forums/thread-697-1-1.html
不过里面说了 我们熟悉的 == 用来比较存在对象中的值 我是比较值是否为空,应该可以用==吧

我承认我写的代码有点冗长,不过这是个人习惯而已,我觉得这样看得明白,结果在RUBY中影响了性能,PY中没有,我也没有办法,事前没有想到过...

同上,
if (!result_search)

即可,如果觉得这样不够“清晰”的话,我们看看相对“传统”的语言,比如Java:
Boolean checked;
//check 被赋值;
if (Checked) //第一种写法;
if (Checked == true) //第二种写法;

我想第二种并不就让人得到更多的信息。
如果是Python的话,这个问题比Ruby更加明显;
比如,我们要知道字符串是否为空或None,这通常拥有相似的意义:
if str: #第一种
.......
if (str != None) or (str != ''): #第二种

我个人觉得,习惯不是在任何时候都能作为挡箭牌。
希望我的措辞没有过激的地方。
72 楼 xukong 2009-05-05  
Hooopo 写道
xukong 写道
呵,你还在花时间改进啊...

我在X60上测试了10次你的代码,环境如前,不要说100万,50万都还是保持在31秒左右,50万py是12秒,而且现在的程序已经忽略了数据处理的正确和程序的可读性,我原来写的ruby代码虽然性能不好,但是还算具有一定可读性,也是能够实际运行解决真正问题的代码啊

使用PYTHON我花了20%的时间解决了80%的性能问题,性能还不错,但是象现在ruby已经花了太多时间来改进性能这个问题了,而且这样完全追求性能的演示写法我也不喜欢,毕竟优化是放在正确和可读性都保证之后,优化到极点,代码多半也不是那么好看懂了,时间花费也更多了


可读性是指给学过ruby的人读的,代码可读性也不是像你那样这么简单的脚本写了230多行,弄那么多不知所云的变量。还有这样的代码:
if ((ic != nil) && (ic > 0))

if (result_search == nil)

虽然您号称写了10年程序,但是单从你写的那ruby代码来看你和我一样属于对ruby还没入门级别的。
至于你喜欢用python这个是你的自由,谁也管不到。可是拿这样水准的ruby代码来说明你选择python的原因未免是在忽悠别人也是忽悠自己。


为什么非要上纲上线的说什么忽悠?我并没有贬低什么来吸引谁,只是表达了我的疑惑,我的所有贴子最多只表明了认识不到位,有失偏颇而已...

而且我一再说了,是在2个几乎一模一样的代码执行后,结果另我奇怪才发的帖子,为什么几乎一模一样的代码PY就要快,代码中也并没有用什么独有的数据类型和相关操作(就是哈希表,数组,简单的字符串操作,文件读写,呵,一般好象也就用到这些也能解决大多数问题了这些最常用到的要用特别的语句调用才能有效果?),我功力不够,不知道是怎么回事,就上来发表请大家指点下,说得好听点,就叫抛砖引玉吧...

if ((ic != nil) && (ic > 0))
这么写自然有道理

tmp_date = "abc:"
ic = tmp_date.index(":")

if (ic > 0)
    puts "ic > 0"
end

你去掉和加上"abc:"中的:执行试试,然后再用我的语句加上和去掉:试试
因为我从数据库中导出的时间字段在小于10点前小时是不会补成09的,而我在按2位处理小时时,如果这条记录是10点前的,就会取到包含如9:的错误值,所以必须判断是否有:,有的话就要重新取值

if (result_search == nil)

有什么不对?变量名取长了?我写的代码变量名确实比较长,个人习惯,总比A,B,C好吧
哦,我查了下,看到这篇帖子 http://www.ruby-lang.org.cn/forums/thread-697-1-1.html
不过里面说了 我们熟悉的 == 用来比较存在对象中的值 我是比较值是否为空,应该可以用==吧

我承认我写的代码有点冗长,不过这是个人习惯而已,我觉得这样看得明白,结果同样的写法在RUBY中影响了性能,PY中没有,我也没有办法,事前没有想到过...
71 楼 rrsy23 2009-05-05  
尝试哈perl看看
70 楼 jichongchong 2009-05-05  
py和java被学校大量引入课程了,ruby好像还没有。
69 楼 xukong 2009-05-05  
哦,失误,失误...

那我就尽量说明下,实际当中状态报告有好几种,DELIVRD,UNDELIVRD,EXPIRED,REJECT,都是只取前4位,这里是测试数据嘛,就只写了2种,成功和不成功,还有就是没有返回状态报告,也就是过期了(2天之内不返回)

另外看了改进后的RUBY,有点小寒,不是对RUBY有点了解的,有些符号操作就看不懂了,当然不懂就不乱用,也不要乱发表评论,这个我是吸取教训了(不过我也只是常规写法啊,谁想到会有这么大差距,关键是2个代码都几乎一样,结果不一样,就有点被迷惑,想当然了),不过要吸引同事,初期还是: 嘿,我这个程序跑得还比较快,也不太难看懂,有兴趣学下没有,呵,呵...
68 楼 Hooopo 2009-05-05  
xukong 写道
哦,那就好,那大家就更可以根据需要选择了

我没有细看,不过你产生的结果和我产生的结果不一样,好象少了几个字符?你比较下我产生的文件就看到了

顺便说一下,你现在的处理顺序会多些数据: 你把每行等待状态报告匹配的行都输出了,实际应该从状态报告文件来与等待状态报告的文件比较,有状态报告的就输出到GMO,GMT文件,没有的应该输出到过期文件GMA,你现在的输出包含了过期记录了,当然,这在现在的性能改进代中码是枝节问题,但是实际代码要考虑各个情况的,不是一味写文件,呵...


wosmvp同学只是让你看看ruby代码不是你那样写的,你这些细枝末节问题只要你把需求说清楚了当然谁都会处理的,也不是什么困难的事。

相关推荐

    Python项目开发实战 源代码

    这个压缩包中的"Python项目开发实战 (源代码)"提供了丰富的实例,让你能够深入学习Python的实际应用。以下是基于这些资源可能涵盖的一些核心知识点: 1. **基础语法**:Python的基础语法包括变量、数据类型(如...

    Python数据分析实战源代码

    Python数据分析实战源代码是针对那些想要深入理解和应用Python进行数据处理和分析的初学者和专业人士的宝贵资源。这个综合性的教程共分为六个章节,每个章节都涵盖了数据分析过程中的一个重要环节,确保学习者能够...

    python web开发实录源代码

    "Python Web开发实录源代码"是针对这一主题的学习资料,通常包含一系列的示例项目和练习,旨在帮助开发者通过实践掌握Web开发的关键概念和技术。 首先,Python作为服务器端编程语言,其简洁的语法和强大的库支持...

    Python植物大战僵尸源代码

    《Python植物大战僵尸源代码解析》 植物大战僵尸(Plants vs. Zombies)是一款深受玩家喜爱的策略塔防游戏,而Python版的植物大战僵尸源代码则是编程爱好者学习游戏开发的绝佳实例。在这个项目中,开发者用Python...

    python贪吃蛇完整的源代码资料.zip

    python贪吃蛇完整代码,python贪吃蛇完整的源代码资料.zippython贪吃蛇完整代码,python贪吃蛇完整的源代码资料.zippython贪吃蛇完整代码,python贪吃蛇完整的源代码资料.zippython贪吃蛇完整代码,python贪吃蛇完整...

    Python编程从入门到实践书本源代码文件.rar

    通过深入研究"Python编程从入门到实践"的源代码文件,读者不仅可以巩固Python基础知识,还能逐步提升解决实际问题的能力,为今后的编程生涯奠定坚实基础。在学习过程中,读者应结合书中的讲解,动手运行代码,调试...

    python我的世界小游戏源代码

    《Python我的世界小游戏源代码》是一款基于Python编程语言和Pygame库开发的模拟"我的世界"风格的游戏。Pygame是Python的一个扩展库,专门用于创建2D游戏和多媒体应用程序。这个项目展示了如何利用Python和Pygame来...

    Python学习手册源代码

    Python是一种高级编程语言,以其简洁明了的语法和强大的功能深受程序员喜爱,是初学者入门编程的理想选择。"Python学习手册源代码"是一份宝贵的资源,它提供了丰富的实例和实践练习,帮助用户深入理解Python语言的...

    python基础教程源代码-python基础教程第三版源代码.pdf

    这个源代码集合包括了从基础语法到高级特性的各种示例,旨在帮助初学者逐步掌握Python编程。 在Python的基础部分,教程可能涵盖以下内容: 1. **变量与数据类型**:包括整型、浮点型、字符串、布尔型等基本数据...

    Python超级玛丽完整版源代码,Python超级马里奥经典版源代码

    Python超级玛丽完整版源代码是基于Python编程语言实现的一个经典游戏项目,它通过pygame库来构建游戏场景,模拟了我们熟知的《超级马里奥》游戏。pygame是Python中的一个开源游戏开发模块,提供了丰富的图形、音频和...

    Python连连看小游戏源代码

    **Python连连看小游戏源代码详解** 在编程领域,制作小游戏是一种常见的学习和实践方式,而“连连看”作为一款广受欢迎的休闲游戏,其Python实现更是吸引了许多初级和中级开发者。这个项目是基于Python语言构建的,...

    Python开发课程设计高校教务系统源代码+数据库.zip

    Python开发课程设计高校教务系统源代码+数据库Python开发课程设计高校教务系统源代码+数据库Python开发课程设计高校教务系统源代码+数据库Python开发课程设计高校教务系统源代码+数据库Python开发课程设计高校教务...

    Python 飞机大战源代码

    【Python 飞机大战源代码】是一款基于Python编程语言实现的简单游戏,它展示了Python在游戏开发中的应用。这个游戏的源代码可以帮助开发者了解游戏逻辑、图形渲染以及事件处理等基本概念。 首先,Python飞机大战的...

    用Python编中国结源代码

    用Python编中国结源代码,中国结代表着团结幸福平安,特别是在民间,它精致的做工深受大众的喜爱

    Python-2.7.2 源代码

    Python 2.7.2 源代码是Python编程语言的一个重要版本的原始实现,它为程序员和开发者提供了深入理解Python内部工作原理的机会。对于想要探究Python如何执行各种操作、优化代码性能或甚至开发自己的Python解释器的人...

    机器学习python源代码

    机器学习python源代码

    Python我的世界小游戏源代码

    Python我的世界小游戏源代码,我的世界小游戏使用方法: 移动 前进:W,后退:S,向左:A,向右:D,环顾四周:鼠标,跳起:空格键,切换飞行模式:Tab; 选择建筑材料 砖:1,草:2,沙子:3,删除建筑:鼠标左键单击...

    diveintopython源代码

    首先,让我们从标题"深人Python源代码"开始。这通常指的是对Python标准库或Python语言本身的详细解析,通过阅读和分析源代码,我们可以了解到Python设计的哲学,以及如何实现各种功能。深入理解源码有助于我们成为更...

    Python 源代码剖析

    通过阅读《Python源代码剖析》这样的文章,开发者能够更深入地理解Python的工作方式,提升编程技能,解决实际问题时也能更加得心应手。同时,对于想要贡献Python开源社区或编写Python扩展模块的开发者来说,这种深入...

    《Python编程:从入门到实践》源代码文件

    《Python编程:从入门到实践》是一本广受欢迎的Python编程教材,旨在帮助初学者掌握Python语言的基础知识,并...同时,这些项目也可以作为进一步学习和探索Python相关领域的起点,比如机器学习、数据科学或者网络编程。

Global site tag (gtag.js) - Google Analytics