如何学习php 加php 调用 pythonn

保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.
在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。
所有提交的信息确保安全。
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
单击提交则表示您同意developerWorks
的条款和条件。 .
所有提交的信息确保安全。
developerWorks 社区:
我的概要信息
选择语言:
您是一名经验丰富的 PHP 开发人员,并且希望学习 Python 吗?本文将从 PHP 开发人员的角度来探索 Python 开发的世界,将大家熟悉的 PHP 概念(如变量、列表、函数)转换成同等的 Python 概念。
, 负责人, Triple Dog Dare Media
Thomas Myer 是一名顾问、作家和讲师,居住在 Austin。他创立了 Triple Dog Dare Media。
您是一名 PHP 开发人员。您在过去 五年(或更长时间)中可能一直都编写应用程序,您已经将许多想像变成了可能 — 电子商务系统、简单内容管理系统、Twitter 和 Facebook 集成以及各种自定义实用工具。您可能还需要维护大量代码 — 从简单的显示页面到包含数千行其他人编写的代码的自定义应用程序,不一而足。
您已经在 PHP 上花费了大量时间,转向另一种语言势在必行。您也知道原地不动就意味着被动挨打。其实,学习新语言就像是去国外旅行:您会接触到新事物,品尝新食物,领略不同的文化,与不同的人对话,了解一切新奇,然后再回到家中体会原来的环境。
本文将带领您前往 Python 的世界遨游一番。本文假定您不具备 Python 编程语言的任何知识,但至少应具备一些基本的编程知识。我们将侧重于对 Python 和 PHP 进行比较 — 并不是为了分出两者孰优孰劣,而是因为一个简单的真理:在学习新知识时参照已有知识会更加轻松。本文的目标相当简单:简要介绍 Python 的基本知识,为读者自己进行深入搜索打下基础。幸运的是,您将认识到 Python 实际上与您之前所使用的语言并无不同之处。再次以旅游为例,您并不需要到太远的地方,只需要去语言相通的邻国即可。什么是
Python?Python 的定义是一种 “通用的高级编程语言”。它以简洁性和易用性著称,而且是少有的几种对空格和缩进有要求的语言之一。Python 的主要作者 Guido Van Rossum 在社区中仍然非常活跃,并且被人们戏称为仁慈的独裁者。Python 的灵活性和紧凑性是值得称赞的。它支持面向对象编程、结构化编程、面向方面编程以及函数编程等。Python 采用小内核设计,但具备大量扩展库,从而确保了该语言的紧凑性和灵活性。从语法的角度来说,您会发现 Python 的简洁性异常突出 — 几乎可以说是一种纯粹的境界。PHP 开发人员要么会对这种方法的语法深深陶醉,要么会发现它的局限性。这主要取决于您自己的见解。Python 社区推动这种美感的态度是非常明确的,它们更加重视的是美学和简洁性,而不是灵动的技巧。已形成 Perl 传统(“可以通过多种方式实现它”)的 PHP 开发人员(像我自己)将面对一种完全相反的哲学(“应该只有一种方法可以实现它”)。事实上,该社区定义了一种特有的代码风格术语,即 Python 化(pythonic)。您可以说您的代码是 Python 化,这是对 Python 术语的良好运用,同时还可展现语言的自然特性。本文并不打算成为 Pythonista(或 Pythoneer),但如果您想继续 Python 之路,那么千万不能错过本文的知识点。就像 PHP 有自己的编程风格,Perl 有自己的概念方法,学习 Python 语言必然也需要开始用该语言来思考问题。 另一个要点:在撰写本文时,Python 的最新版本是 V3.0,但本文主要侧重于 Python V2.6。Python
V3.0 并不能向后兼容之前的版本,而且 V2.6 是使用最为广泛的版本。当然,您可以根据需求使用自己喜好的版本。Python 与 PHP 有何不同?一般来说,PHP 是一种 Web 开发语言。是的,它提供了一个命令行接口,并且甚至可用于开发嵌入式应用程序,但它主要还是用于 Web 开发。相反,Python 是一种脚本语言,并且也可用于 Web 开发。从这方面来说 — 我知道我会这样说 — 它比 PHP 更加接近 Perl。(当然,在其他方面,它们之间并无实际不同。我们继续往下看。)
PHP 的语法中充斥着美元符号($)和大括号({}),而
Python 相对来说则更加简洁和干净。PHP 支持 switch 和 do...while 结构,而 Python 则不尽然。PHP 使用三元操作符(foo?bar:baz)和冗长的函数名列表,而命名约定更是无所不有;相反,您会发现 Python 要简洁多了。PHP 的数组类型可同时支持简单列表和字典或散列,但 Python 却将这两者分开。Python 同时使用可变性和不变性的概念:举例来说,tuple 就是一个不可变的列表。您可以创建 tuple,但在创建之后不能修改它。这一概念可能要花些时间来熟悉,但对于避免错误极为有效。当然,更改 tuple 的惟一方法是复制它。因此,如果您发现对不可变对象执行了大量更改,则应该重新考量自己的方法。之前提到,Python 中的缩进是有含义的:您在刚开始学习该语言时会对此非常难以适应。您还可以创建使用关键字作为参数的函数和方法 — 这与 PHP 中的标准位置参数迥然不同。面向对象的追随者会对 Python 中真正的面向对象思想感到欣喜,当然还包括它的 “一级” 类和函数。如果您使用非英语语言,则会钟爱于 Python 强大的国际化和 Unicode 支持。您还会喜欢 Python 的多线程功能;这也是最开始令我为之着迷的特性之一。综上所述,PHP 和 Python 在许多方面都彼此类似。您可以方便地创建变量、循环,使用条件和创建函数。您甚至可以轻松地创建可重用的模块。两种语言的用户社区都充满活力和激情。PHP 的用户群体更加庞大,但这主要归因于它在托管服务器及 Web 专注性方面的优势和普及性。很好 — 简要介绍到此为止。我们开始探索之旅。使用 Python清单 1 展示了一个基本的 Python 脚本。清单 1. 一个简单的 Python 脚本for i in range(20):
print(i)清单 2 展示了脚本的必然结果。清单 2. 清单 1 的结果0
19在深入探索之前,我们先来了解一些预备知识。首先从变量开始。变量可以看到,表示变量并不需要任何特殊的字符。变量 i 就是一个纯粹的 i— 毫无特殊之处。表示代码块或语言结束也不需要任何特殊字符(比如分号和括号);只需要在 for 行使用一个简单的冒号即可(:)。还需注意,缩进会向 Python 指示哪些内容属于 for 循环。举例来说,清单 3 中的代码会在循环中为各编号输出一个说明。清单 3. 为各循环添加一条语句for i in range(20):
print('all done?')相反,清单 4 中的代码会在循环结束处输出一条说明。清单 4. 在循环后添加一条语句for i in range(20):
print('all done!')现在,我第一次看到这样的代码时,我认为这完全是无稽之谈。什么?让我相信换行和缩进能保证代码的结构和运行?请相信我,不用多久,您就会习惯它(但我需要承认必须到达到分号处才会结束语句的运行)。如果您与其他开发人员共同开发 Python 项目,则会发现这种可读性的用处是多么大了。您不再像以前那样总是猜测 “这个聪明的家伙在这里究竟想干些什么?”
在 PHP,您使用 = 操作符为变量分配值(参见 )。在 Python 中,您使用相同的操作符,只是需要标记或指向值。对于我来说,它就是赋值操作而已,我不需要过多担心专门的术语。清单 5. 创建变量yorkie = 'Marlowe' #meet our Yorkie Marlowe!
mutt = 'Kafka'
#meet our mutt Kafka
print(mutt)
#prints KafkaPython 的变量名称约定与 PHP 类似:您在创建变量名时只能使用字母、数字和下划线(_)。同样,变量名的第一个字符不能是数字。Python 变量名是区分大小写的,并且您不能使用特定的 Python 关键字(比如 if、else、while、def、or、and、not、in 和 is 开始符)作为变量名。这没有什么值得奇怪的。 Python 允许您随意执行基于字符串的操作。清单 6 中的大多数操作应该都是您熟悉的。清单 6. 常见的基于字符串的操作yorkie = 'Marlowe'
mutt = 'Kafka'
ylen = len(yorkie) #length of variable yorkie
print(ylen) #prints 7
print(len(yorkie)) #does the same thing
len(yorkie) #also does the same thing, print is implicit
print(yorkie.lower()) #lower cases the string
print(yorkie.strip('aeiou')) #removes vowels from end of string
print(mutt.split('f')) #splits "Kafka" into ['Ka', 'ka']
print(mutt.count('a')) #prints 2, the number of a's in string
yorkie.replace('a','4')
#replace a's with 4's条件语句您已经了解了如何使用 for 循环;现在,我们来讨论条件语句。您会发现 Phyon 中的条件语句与 PHP 基本相同:您可以使用熟悉的 if/else 型结构,如清单 7 所示。清单 7. 一个简单的条件测试yorkie = 'Marlowe'
mutt = 'Kafka'
if len(yorkie) & len(mutt):
print('The yorkie wins!')
print('The mutt wins!')您还可以使用 if/elif/else(elif,等价于 PHP 中的 elseif)创建更加复杂的条件测试,如清单 8 所示。清单 8. 一个比较复杂的条件测试yorkie = 'Marlowe'
mutt = 'Kafka'
if len(yorkie) + len(mutt) & 15:
print('The yorkie and the mutt win!')
elif len(yorkie) + len(mutt) & 10:
print('Too close to tell!')
print('Nobody wins!')您可能会说,目前为止并没有什么与众不同的地方:甚本上和想像中没有太大区别。现在,我们来看 Python 处理列表的方式,您会发现两种语言之间的不同之处。
列表一种常用的列表类型是 tuple,它是不可变的。在 tuple 中载入一系列值之后,您不会更改它。Tuple 可以包含数字、字符串、变量,甚至其他 tuples。Tuples 从 0 开始建立索引,这很正常;您可以使用 -1 索引访问最后一个项目。您还可以对 tuple 运行一些函数(请参见清单 9)。清单 9. Tuplesitems = (1, mutt, 'Honda', (1,2,3))
print items[1]
#prints Kafka
print items[-1] #prints (1,2,3)
items2 = items[0:2]
#items2 now contains (1, 'Kafka') thanks to slice operation
'Honda' in items #returns TRUE
len(items) #returns 4
items.index('Kafka') #returns 1, because second item matches this index location列表与 tuple 类似,只不过它们是可变的。创建列表之后,您可以添加、删除和更新列表中的值。列表使用方括号,而不是圆括号(()),如清单 10 所示。清单 10. 列表groceries = ['ham','spam','eggs']
len(groceries) #returns 3
print groceries[1] #prints spam
for x in groceries:
print x.upper() #prints HAM SPAM EGGS
groceries[2] = 'bacon'
groceries #list is now ['ham','spam','bacon']
groceries.append('eggs')
groceries #list is now ['ham', 'spam', 'bacon', 'eggs']
groceries.sort()
groceries #list is now ['bacon', 'eggs', 'ham', 'spam']字典类似于关联数组或散列;它使用键值对来存储和限制信息。但它不使用方括号和圆括号,而是使用尖括号。与列表类似,字典是可变的,这意味着您可以添加、删除和更新其中的值(请参见清单 11)。清单 11. 字典colorvalues = {'red' : 1, 'blue' : 2, 'green' : 3, 'yellow' : 4, 'orange' : 5}
colorvalues #prints {'blue': 2, 'orange': 5, 'green': 3, 'yellow': 4, 'red': 1}
colorvalues['blue'] #prints 2
colorvalues.keys() #retrieves all keys as a list:
#['blue', 'orange', 'green', 'yellow', 'red']
colorvalues.pop('blue') #prints 2 and removes the blue key/value pair
colorvalues #after pop, we have:
#{'orange': 5, 'green': 3, 'yellow': 4, 'red': 1}在 Python 中创建一个简单的脚本现在,您已经对 Python 有了一定的了解。接下来,我们将创建一个简单的 Python 脚本。该脚本将读取位于您的服务器 /tmp 目录下的 PHP 会话文件的数量,并在日志文件中写入摘要报告。在该脚本中,您将学习如何导入特定函数的模块,如何使用文件,以及如何写入日志文件。您还将设置一系列变量来跟踪所收集的信息。 清单 12 展示了整个脚本。打开一个编辑器,并将代码粘贴到其中,然后在系统中将该文件保存为 tmp.py。然后,对该文件运行 chmod + x,使它成为可执行文件(假定您使用 UNIX® 系统)。 清单 12. tmp.py#!/usr/bin/python
from time import strftime
stamp = strftime("%Y-%m-%d %H:%M:%S")
logfile = '/path/to/your/logfile.log'
path = '/path/to/tmp/directory/'
files = os.listdir(path)
numfiles = 0
for f in files:
if f.startswith('sess_'):
info = os.stat(path + f)
numfiles += 1
bytes += info[6]
if numfiles & 1:
title = 'files'
title = 'file'
string = stamp + " -- " + str(numfiles) + " session " \
+ title +", " + str(bytes) + " bytes\n"
file = open(logfile,"a")
file.writelines(string)
file.close()在第一行中,您可以看到一个 hash-bang 行:它用于标识 Python 解释器的位置。在我的系统中,它位于 /usr/bin/python。请根据系统需求调整这一行。接下来的两行用于导入特定的模块,这些模块将帮助您执行作业。考虑到脚本需要处理文件夹和文件,因此您需要导入 os 模块,因为其中包含各种函数和方法,可帮助您列出文件、读取文件和操作文件夹。您还需要写入一个日志文件,因此可以为条目添加一个时间戳 — 这就需要使用时间函数。您不需要所有时间函数,只需要导入 strftime 函数即可。 在接下来的六行中,您设置了一些变量。第一个变量是 stamp,其中包含一个日期字符串。然后,您使用 strftime 函数创建了一个特定格式的时间戳 — 在本例中,时间戳的格式为
12:43:03。 接下来,创建一个 logfile 变量,并在文件中添加一个实际存储日志文件消息的路径(该文件不需要实际存在)。为简单起见,我在 /logs 文件夹中放置了一个日志文件,但您也可以将它放置在别处。同样,path 变量包含到 /tmp 目录的路径。您可以使用任何路径,只要使用斜杠作为结束即可 (/)。接下来的三个变量也非常简单:files 列表包含指定路径中的所有文件和文件夹,另外还包含 bytes 和 numfiles 两个变量。这两个变量都设置为 0;脚本会在处理文件时递增这些值。完成所有这些定义之后,接下来就是脚本的核心了:一个简单的 for 循环,用于处理文件列表中的各文件。每次运行循环时,脚本都会计算文件名;如果它以 sess_ 开头,则脚本会对该文件运行 os.stat(),提取文件数据(比如创建时间、修改时间和字节大小),递增 numfiles 计数器并将该文件的字节大小累计到总数中。当循环完成运行后,脚本会检查 numfiles 变量中的值是否大于 1。如果大于 1,则会将一个新的 title 变量设置为 files;否则,title 将被设置为单数形式的 file。脚本的最后部分也非常简单:您创建了一个 string 变量,并在该变量中添加了一行以时间戳开始的数据,并且其后还包含 numfiles(已转换为字符串)和字节(也已转换为字符串)。请注意继续字符(\);该字符可允许代码运行到下一行。它是一个提高可读性的小技巧。 然后,您使用 open() 函数以附加模式打开日志文件(毕竟始终需要在该文件中添加内容),writelines() 函数会将字符串添加到日志文件中,而 close() 函数用于关闭该文件。现在,您已经创建了一个简单的 Python 脚本。该脚本可用于完成许多任务,举例来说,您可以设置一个 cron 作业来每小时运行一次这个脚本,以帮助您跟踪 24 小时内所使用的 PHP 会话的数量。您还可以使用 jQuery 或其他一些 JavaScript 框架通过 Ajax 连接这个脚本,用于为您提供日志文件提要(如果采用这种方式,则需要使用 print 命令来返回数据)。
结束语作为开发人员,我们投入大量时间学习特定的语言和方法。有时,这样做会引起各种语言之间孰优孰劣的争议。我参加了不少这样的争论,相信读者们也是如此。需要承认的是,大多数这样的讨论最终都会以相同的结果结束 — “你能做的,我都可以更好的完成” — 这其实毫无意义。
但是,当您将目光转移到另一种语言时,您会发现大多数语言都具备相似的工具、原理和方法。学习第一种语言是艰辛的,但将自己所掌握的知识应用于另一种语言可以极大地简化学习过程。即使您实际上并不用迁移到第二种语言,但是可以将自己对编程思想和方法的领悟提升一个层次。
所幸的是,本文为您提供了一些关于 Python 的知识。我希望您可以继续学习这个优秀的语言。您可能从未离开 PHP 的世界(毕竟,它是您赖以生存的工具),但请不要停止学习的脚步。
并了解关于该语言的更多信息。
是开始学习 Python 语言的好去处。
免费查阅 。
阅读 “”,了解 Python 的方方面面。
访问 ,其中提供了用于 Web 2.0 开发的各种工具和信息。
是 PHP 开发人员的集中资源库。
请访问 “”。
浏览 developerWorks 上的所有 。
查阅 IBM developerWorks 的 ,扩展您的 PHP 技能。
想聆听针对软件开发人员的有趣访谈和讨论,请访问 。
想结合使用数据库与 PHP?请获取 ,它是一个无缝、开箱即用、易于安装的 PHP 开发和生产环境,可支持 IBM DB2 V9。 社区涵盖了大量主题,是一个成功社区的典范。
查阅最近将在全球举办的面向 IBM 开放源码开发人员的研讨会、交易展览、网络广播和其他 。 访问 developerWorks 获得丰富的 how-to 信息、工具和项目更新以及,帮助您用开放源码技术进行开发,并将它们与 IBM 产品结合使用。随时关注 developerWorks 和。
查看免费的 ,观看并了解 IBM 及开源技术和产品功能。 :访问 ActiveState Code,参考可以利用的 Python 代码示例。
改进您的下一个开源开发项目,可以下载获得。 下载
或 ,开始使用来自
DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere® 的应用程序开发工具和中间件产品。
并加入 developerWorks 社区。
参与 developerWorks 。
developerWorks: 登录
标有星(*)号的字段是必填字段。
保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件。
在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。
所有提交的信息确保安全。
选择您的昵称
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。
您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
标有星(*)号的字段是必填字段。
(昵称长度在 3 至 31 个字符之间)
单击提交则表示您同意developerWorks 的条款和条件。 .
所有提交的信息确保安全。
IBM PureSystems(TM) 系列解决方案是一个专家集成系统
通过学习路线图系统掌握软件开发技能
软件下载、试用版及云计算
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=Open sourceArticleID=476508ArticleTitle=适用于 PHP 开发人员的 Python 基础知识publish-date=语言选择问题
服务器君一共花费了13.004 ms进行了2次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议
一句话总结
简单地总结:
假如你想帮他尽快找个活儿,赚到钱,推荐PHP。
假如你想让他成为一个高效工程师,推荐 Python。
假如你想让他爱上他的工作,推荐 Ruby。
语言的选择
编程语言非常重要,不要认为他们都图灵等价,用起来都一样。实际上,好的语言,带给你的东西是超乎想像的。
下面是一些看法:
程序员的时间远比机器的时间宝贵:选择开发效率最高的语言吧,不要过于在乎运行性能,如果你开发不出东西,那么跑得多快也没用。
优雅的抽象胜于简单的堆砌: 这意味着你的代码是最简洁而又充满设计感的,面向对象,容易的闭包,一切都是表达式等等,而最好的抽象是语言本身能够分层,既能够书写语言的语言,比如 DSL 能力强弱是个指标。
才华横溢的社区胜过有难度的招聘:这种语言一定要拥有一个活跃且才华横溢的社区,只要使用她的人,就有一种自豪感和精英意识,在社区里的每个人都自认为比别人强。即使,你不那么容易招聘到程序员,但我们不都知道,一个有才华的程序员胜过100个平庸之辈嘛?选用这种语言,能保证团队里一起编码的每一个人,都是高手。
也是最重要的,乐趣胜过一切: 灵活,好玩,永远有新发现的魔术般的语言,只有你想不到的,没有你做不到的,对一个真正的hacker来说,这是选择语言唯一的理由,这也是 Perl 为什么能够长期存活的原因,因为她是 hacker 为 hacker 创作的。
如果能看完这些观点,相信你能猜出我的选择了 :) 是的,Ruby是主流语言中我认为最出色的,最高的开发效率,最优雅简洁的抽象能力,最有才的社区(Github为中心),和最大的乐趣。
做为一个程序员,是应该去选取不同思路的语言去学习的,而且当然要选择最有代表性的语言,在编程的世界里,主流的思路其实就两种,一是结构化编程,一是函数化编程,面向对象只是结构化编程进化的一个阶段而已,其他各种各样的思路大多数是这两个的分支。
社区的创造力
选择一门语言要看这个语言社区的气质,以及你想用他做什么东西。
Mac 上可以运行那么多种语言,有很多人用 git。但却只有 Ruby 的用户开发出了 homebrew 这样牛逼的包管理系统,善用了 github 的诸多特性,真正的把每一个用户都变成了潜在的 repo 贡献者。我相信这绝对不是巧合。如果同样的条件摆在面前,你做出了一个全新的东西而别人没有,说明了你的创造力比别人要高。
作为 Python 的使用者,我觉得 Ruby 语法的优劣不太重要。但是从外部看 Ruby 社区近些年持续的向外输出一些从技术到开发上的理念,不断的有大大小小的很酷的项目从
社区中诞生的出来。使得我觉得 Ruby 社区是一个很有创新气质的社区。因此如果你学编程是想做出一个很酷的东西,那么我强烈建议你直接学习 Ruby。
从 Web 开发去比较
对于 Web 开发,这三种语言都能胜任,但是还是有不少区别:
Ruby 的 rails 框架确实是称得上是快速开发的典范,但是 Ruby 的语法过于灵活,有些时候对同一个处理会有很多种不同的写法。
PHP 是老牌的网页脚本语言,相对其他两门而言比较成熟。PHP 虽然快速成型,但容易失控,尤其项目稍大的时候。
对于 Python 来说,由于自身的简约设计,可能应用的方面的更多,几乎是可以涉及到IT的各个方面,Web 只是它其中一个方面,而且有比较成功的杀手级应用,Youtube 就是用 Python 开发的,服务器的各种原来用 shell 或者 perl 的脚本,科学计算,游戏的脚本,甚至在桌面客户端上也能看到 Python 的佳作,如 UliPad,对于初学者来说
是个不错的选择,在这三者中它的语法是最简洁和清晰的,适合初学者学习。
入门语言还是应该选择一个比较严谨的,像Java,Python那样的语言比较合适,从 PHP 语言不太容易学到 OO 的思想和设计模式之类的东西,而这些对于一个优秀的 PHP 程序员来说也是很必要的。这里不是黑 PHP,每个语言都有自己的优点,比如 PHP 入门快,可以增加编程的信心,明白编程那点事后,可以触类旁通的接触其他语言。很多编程者就是从 PHP 入门的。
在编程学习里有这么一个现象:直接推荐 Python 的人,基本都没深入学习过 Ruby。学过 Python 和 Ruby 的人,基本都喜欢 Ruby。
具体使用什么语言,不是唯一的。根据场景是要分的。一个人至少是需要学习3种语言的:
一种是工作语言,比如C++,Java,PHP,这三种语言,是互联网的万能药,只要会了,工作是永远都不愁的,大型公司一般都会使用,用来开发一些大型项目。
一种是自己使用的语言,比如 Python,Ruby,当然,我也推荐 Ruby。我也用过 python ,后来因为工作需要,忍痛放弃了 Python,最后,竟然深深喜欢上 Ruby 了。然后就不再回头了,对于个人使用来说,是要非常注重开发效能的,一门语言,至少能用10年,如果自己选择的语言,可以在开发效能上超越其他语言十分之一,那么在十年内这种收益是非常大的。
还有一门是新语言使用,不必深入,但是一定要了解,这有助于比较不同语言的不足,才不至于成为井底之蛙。比如 Nodejs, Scale等。
我觉得直接学 Ruby 也是不错的选择。
本来 rails 框架就自带了 server,WEBrick。看着 Log 做开发效率非常高。
如果要部署的话,用 passenger 也是绝对方便。
Views 层的模板系统,ERB 应该比 Python 的各种要来得美,而且更加简单。之前用过 Django,觉得太重了。
Rails 可以让你不断的惊讶程序可以这样写的啊,我第一次看到有 7.days.ago 的时候惊掉了。
Rails强调一种DSL,一来符合人们的语言习惯、二来我觉得是一种编程语言的颠覆,我们并不是在用某个特定的语言(比如Ruby)来实现一个功能(就如同是用C还是用Java来写一个编译器),而是我可以在这些语言的基础上定义一种新的语言(类似于lex,yacc这样的词法语法生成器)。看看routes.rb的设置吧,能有多么惊讶,这是程序么,简直就是诗。美不只是在于内容,同样在于形式。
Ruby 或者说 Rails 的缺点或许就是学习的曲线太陡,我之前有过 MVC 的经验,上手RoR 还是花了三周的时间,或许也是自己接受能力不强吧,但更确切的问题应该在于 Rails 的惯用法太多:当然,我在用 ActiveRecord 拿数据的时候,可以写 find_by_sql("blablabla"),但是细查 Rails 的文档,他是提供类似于 Joins.Group.Select 等等的方法的,姑且不论效率是不是真的会快点,少写一点 sql 在 .rb 的文件里面不是会更美一些么。再到后来,偶然又发现有 metawhere 这种东西,是不是又要忍痛抛弃既往学到的那一堆 works but not elegant 的东西,义无反顾的投身到 metawhere 的学习中。
当然,如果不追求完美,上手也没有这么恐怖。
关于 Python
python的优势很多,比如:
语法简洁,无需编译。Python 语法简洁高效,一句话“人生苦短,我用 Python”啥都说明了,高效是 Python 的特点。
强大的数据结构。默认安装的Python开发环境已经附带了很多高级数据类型,如列表、元组、字典、集合、队列等,无需进一步编程就可以使用这些数据类型的操作。使用这些数据类型使得实现抽象的数学概念非常简单。
强制缩进,让代码自然显得有条理。
插件齐全,可以完成绝大部分的程序设计任务。
当然还很多,具体还可以去看看
这个 chapter。
没有最好的语言,只有最合适的语言。
没有糟糕的语言,只有糟糕的程序员。
没有一种语言是万能的,只会一种语言是万万不能的。
用什么语言不重要,最重要的是效率:开发效率和执行效率。 语法很傻,一点都不炫,但凡是学过C、JS、AS等等语言的,很容易上手,因为语法上有很多重合的地方。很多人看不起 PHP,说 PHP 太简单的人,往往是因为对 PHP 本身不够深入了解,其实 PHP 里面的东西一般人用到的很少,5.3 以上的特性也慢慢让这种语言生动起来,你越是深入,就越能发现它的强大和优势。
这里仅仅列出 PHP,Python 与 Ruby 的一些情况,让读者更好地挑选学习的语言。
语言没优劣之分,Just follow your passion.
本文地址:,欢迎访问原出处。
不打个分吗?
转载随意,但请带上本文地址:
如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 。
大家都在看
现代魔法研究协会欢迎你
阅读一百本计算机著作吧,少年
维斯 (Mark Allen Weiss) (作者), 张怀勇 (译者), 等 (译者)
《数据结构与算法分析:C++描述(第3版)》是数据结构和算法分析的经典教材,书中使用主流的程序设计语言C++作为具体的实现语言。书的内容包括表、栈、队列、树、散列表、优先队列、排序、不相交集算法、图论算法、算法分析、算法设计、摊还分析、查找树算法、k-d树和配对堆等。《数据结构与算法分析:C++描述(第3版)》适合作为计算机相关专业本科生的数据结构课程和研究生算法分析课程的教材。本科生的数据结构课程可以使用《数据结构与算法分析:C++描述(第3版)》第1章~第9章,多学时课程还可以讲解第10章;研究生算法分析课程可以使用第6章~第12章。
扫一扫,在手机上阅读
栏目最新博文
27,084 views
9,948 views
11,125 views
11,933 views
8,812 views
5,872 views
4,686 views
2,983 views
8,799 views
6,751 views
栏目博文推荐
1,821 views
4,451 views
3,469 views
1,706 views
5,595 views
2,524 views
10,688 views
1,809 views
5,721 views
2,259 views
总有人在你切一盘水果时秒杀一道数学题,总有人在你调整愤怒的小鸟弹射角度时记住一个单词,总有人在你打一盘dota的时间内看完一章教材,总有人在你打一局2K的时间里完成一套阅读题,总有人在你与他人闲聊时听一段VOA,总有人在你熟睡时回想一天的得失,总有人比你跑得快,你还会虚度光阴么?
关于网站与作者
互联网信息太多太杂,各互联网公司不断推送娱乐花边新闻,SNS,微博不断转移我们的注意力。但是,我们的时间和精力却是有限的。这里是互联网浩瀚的海洋中的一座宁静与美丽的小岛,供开发者歇息与静心潜心修炼(愿景)。
“Veda”的本义是知识、启示,希望这里能为开发者提供充足的技术资料。
我的电子邮件gonnsai(,腾讯微博:,欢迎与我联系。}

我要回帖

更多关于 php 调用 python 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信