N |
php |
javascript |
python |
ruby |
1 |
模块定义或引入: use, namespace, import, as, include,include_once, require,require_once, 类定义: class, abstract, clone, default, extends, final, implements, interface, new, private, protected, public, trait(friend), 方法定义: callable, declare,enddeclare, function 方法返回:return 检查类型: const,instanceof,isset(), empty(),eval(), 条件语句: if, else,elseif,endif,endswitch,goto, switch, case, 循环语句: break, continue, do, for,endfor,foreach,endforeach, while,endwhile 逻辑判断: and, or,xor 逻辑值和空值: true, false, null 异常处理: try, catch, finally, throw, 对象引用: this, self, parent 编译器相关: __FILE__, __LINE__, __DIR__, __FUNCTION__, __CLASS__, __METHOD__, __NAMESPACE__, __TRAIT__, __halt_compiler() 别名: as 变量定义: var 全局定义: global 静态定义: static 打印语句: echo, print Generator: yield List操作: list(), unset() 其他:exit(),insteadof, die(), http://php.net/manual/zh/reserved.keywords.php http://www.w3school.com.cn/php/index.asp |
模块定义或引入: 无 类定义: new, delete, with 方法定义: void, function 方法返回:return 检查类型: instanceof,typeof 条件语句: if, else, switch, case, default, 循环语句: break, do, while, continue, for, in 逻辑判断: &&, !, || 逻辑值和空值: true, false, null 异常处理: try, catch, finally, throw 对象引用: this 编译器相关: debugger* 变量定义: var List操作: Array()
不能用作标识符的保留字(ECMA-262): abstract,enum,int,short, boolean,export,interface,static, byte,extends,long,super, char,final,native,synchronized, class,float,package,throws, const,goto,private,transient, debugger,implements,protected,volatile, double,import,public, http://www.itxueyuan.org/view/6627.html http://www.w3school.com.cn/js/index.asp |
模块定义或引入: import, as, from 类定义: class 方法定义: def 方法返回:return 检查类型: is 条件语句: if, else,elif 循环语句: break, continue, for, in, while 逻辑判断: and, not, or 逻辑值和空值: True, False, None 异常处理: assert, try, finally, raise, with, except 对象引用: self 嵌入模块:excec 别名: as 全局定义: global 打印语句: print 空语句: pass Generator: yield (产生一个迭代结果) List操作: del 表达式: lambda http://www.2cto.com/kf/201312/268555.html http://www.w3cschool.cn/python/ http://www.runoob.com/python/python-intro.html |
模块定义: module 类定义: class 方法定义:def,undef 方法返回:return 检查类型:defined? 条件语句: if, then, else,elsif, case, when, unless 循环语句: for, in, while, until, next, break, do, redo, retry, yield 逻辑判断: not, and, or 逻辑值和空值: true, false, nil 异常处理: rescue, ensure, raise 对象引用: super, self 块的起始: begin/end 嵌入模块: BEGIN ,END 编译器相关: __FILE__, __LINE__ 别名: alias http://www.runoob.com/ruby/ruby-syntax.html http://www.w3school.com.cn/tags/tag_ruby.asp http://www.yiibai.com/ruby/2013/0819172.html |
2 |
注释符号 # // /*多行注释*/
|
// /*多行注释*/
|
# ''' 多行注释''' 或者 ”””多行注释”””
|
# =begin多行注释=end
|
3 |
echo "Hello world!<br>", “Here”; print "Hello world!<br>"; |
console.log("asdf"); document.write(" asdf
|
print "Hello world!<br>"; |
puts "Hello World!"; |
4 |
常量定义 define("GREETING", "Welcome Here!", true); defined() 检查某常量是否存在。 constant() 返回一个常量的值。 |
无直接用法,可以采用闭包形式 |
无直接用法,可以采用常量类代替。 |
attr:直接定义属性,默认的只读,如果后面跟true,表示属性可写,false为只读 class Test attr :foo, true attr :read end |
5 |
PHP include 和 require语句 通过 include或 require语句,可以将 PHP文件的内容插入另一个 PHP文件(在服务器执行它之前)。 include和 require语句是相同的,除了错误处理方面: 1、require会生成致命错误(E_COMPILE_ERROR)并停止脚本 2、include只生成警告(E_WARNING),并且脚本会继续 |
无直接方法,可以采用下面形式 document.write(””); 和 new_element=document.createElement(”script”); |
import os os.system("python filename") execfile('xx.py') |
require require File.dirname(__FILE__) +'/file2' |
6 |
PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。 这些超全局变量是: $GLOBALS、$_SERVER$_REQUEST、$_POST$_GET、$_FILES$_ENV、$_COOKIE、$_SESSION |
window.name=”测试” |
global x, y, z |
1、一般小写字母、下划线开头:变量(Variable)。 2、$开头:全局变量(Global variable)。 3、@开头:实例变量(Instance variable)。 4、@@开头:类变量(Class variable)类变量被共享在整个继承链中 大写字母开头:常数(Constant)。
|
7 |
$x=5; $x = "Hello world!";
|
var x=2; |
var1 = 1 name = "John" # 字符串 |
|
8 |
索引数组 -带有数字索引的数组 $cars=array("Volvo","BMW","SAAB"); 关联数组 -带有指定键的数组 $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); 或者 $age['Peter']="35"; $age['Ben']="37"; $age['Joe']="43"; 多维数组 -包含一个或多个数组的数组 $cars = array ( array("Volvo",22,18), array("BMW",15,13), array("Saab",5,2), array("Land Rover",17,15) );
|
varmyArray=new Array() myArray [0]="01" myArray [1]="11" 没有多维数组 |
元组和列表、字典 元组与列表类似,不同之处在于元组的元素不能修改。
tup1 = ('physics', 'chemistry', 1997, 2000); tup2 = (1, 2, 3, 4, 5 ); tup3 = "a", "b", "c", "d"; list1 = ['physics', 'chemistry', 1997, 2000]; list2 = [1, 2, 3, 4, 5 ]; print "tup1[0]: ", tup1[0] dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
|
names=Array.new(20) digits=Array(0..9) nums=Array.new(10) { |e| e = e * 2 } def list [['保密',''],['男',1],['女',0]] end |
9 |
|
var patt1=newRegExp("e");
|
|
|
10 |
像c++,更像java,由于是动态类型语言,没有java的重载功能,与java一样可以自动释放内存,基本可以视为面向对象语言。 php的对象可以动态地后添加属性增减数据,不需要模板泛型编程。 相同点,都具有final,抽象类,接口,变量可见度等语法。 interface AnotherTestInterface { }
class Base { static public function test() { var_dump(get_called_class()); } }
class Derive extends Base { }
Base::test(); Derive::test();
var_dump(get_class(new Base())); var_dump(get_class(new Derive()));
|
严格地说,不是面向对象语言,只是面向对象概念中浓缩的一个子集。 面向对象的核心是继承、封装、多态。 Javascript这三者都不太满足。 person=new Object(); person.firstname="Bill"; person.lastname="Gates"; person.age=12; person.methodName();
继承方式可以参考: http://raychase.iteye.com/blog/1337415 |
不像c++、c#也不像java,基本可以视为面向对象语言。 对于面向对象语言还是觉得有{}包围或者类似的起始结束标记看起来比较舒服。 在python中继承中的一些特点: 1:在继承中基类的构造(__init__()方法)不会被自动调用,它需要在其派生类的构造中亲自专门调用。 2:在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。 3:Python总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。 http://www.w3cschool.cn/python/python-object.html http://blog.csdn.net/chongtianfeiyu/article/details/21894005 http://blog.csdn.net/youzhouliu/article/details/51894539 |
与java、c#,ruby更像c++,但跟c++差别也很大,基本可以视为面向对象语言。 与c主要不同的地方(解释执行器的负担加重了): 1:object是强类型 2、变量和函数名称可以动态改变 3:内存自动释放 4: 没有char字符 与c++的不同: 1: 只能通过访问函数修改变量 2: 没有多重继承 3: 可以动态增加和减少类的方法和变量 4: 没有模板机制和类型转换机制(同第3条) 5: 只有两种容器Array和Hash class Father def says puts "I am father." end def MyInfo puts "father info." end end
class Child < Father def says puts "I am child." end def MyInfo puts " child info." end end 参考 http://www.runoob.com/ruby/ruby-object-oriented.html http://www.runoob.com/ruby/ruby-class-case-study.html |
11 |
function familyName($fname,$year) { } |
function myFunction(var1, var2) {这里是要执行的代码} |
def printme(str ): "打印传入的字符串到标准显示设备上" print str return 调用: printme("再次调用同一函数");
|
def method_name [( [arg [= default]]...[, *arg [, &expr ]])] expr.. end def test(a1="Ruby", a2="Perl") puts "编程语言为 #{a1}" puts "编程语言为 #{a2}" end test "C", "C++" test def test i = 100 j = 200 k = 300 return i, j, k end var = test puts var |
12 |
if 语句 -如果指定条件为真,则执行代码 if...else 语句 -如果条件为 true,则执行代码;如果条件为 false,则执行另一端代码 if...elseif....else语句 -选择若干段代码块之一来执行 switch 语句 -语句多个代码块之一来执行
|
if 语句 -只有当指定条件为 true时,使用该语句来执行代码 if...else 语句 -当条件为 true时执行代码,当条件为 false时执行其他代码 if...else if....else语句 -使用该语句来选择多个代码块之一来执行 switch 语句 -使用该语句来选择多个代码块之一来执行
|
if 判断条件: 执行语句…… else: 执行语句…… if 判断条件1: 执行语句1…… elif判断条件2: 执行语句2…… else: 执行语句3…… if num == 3: print '3' elifnum == 2: print '2' else: print 'other' 不支持 switch语句
|
x=1 if x > 2 puts "x 大于 2" elsif x <= 2 and x!=0 puts "x 是 1" else puts "无法得知 x的值" end
x=1 unless x>2 puts "x 小于 2" else puts "x 大于 2" end
case expr0 when expr1, expr2 stmt1 when expr3, expr4 stmt2 else stmt3 end |
13 |
for -循环代码块指定次数 for ($x=0; $x<=10; $x++) {} foreach -遍历数组中的每个元素并循环代码块 $colors = array("red","green","blue","yellow"); foreach ($colors as $value) { echo "$value <br>"; } while -只要指定条件为真,则循环代码块 while($x<=5) {} do...while -先执行一次代码块,然后只要指定条件为真则重复循环 do{} while ($x<=5);
|
break语句用于跳出循环。 continue用于跳过循环中的一个迭代。 for -循环代码块一定的次数 for (var i=0;i<cars.length;i++) {} for/in -循环遍历对象的属性 var person={fname:"John",lname:"Doe",age:25}; for (x in person) { txt=txt + person[x]; } while -当指定的条件为 true时循环指定的代码块 while (i<5) { i++; } do/while -同样当指定的条件为 true时循环指定的代码块 do { i++; } while (i<5);
|
break语句用于跳出循环。 continue用于跳过循环中的一个迭代。 pass是空语句,是为了保持程序结构的完整性。 for循环 for/in for letter in 'Python': print '当前字母 :', letter while循环 i = 2 while(i < 100): j = 2 while(j <= (i/j)): if not(i%j): break j = j + 1 if (j > i/j) : print i, "是素数" i = i + 1
|
while conditional [do或者 :] code end #until表示当条件为假时执行 until conditional [do] code end begin code end while conditional begin code end until conditional for variable [, variable ...] in expression [do] code end for i in 0..5 if i < 2 then next end puts "局部变量的值为 #{i}" end |
14 |
Date() 函数把时间戳格式化为更易读的日期和时间。 date("h:i:sa"); $d=mktime(9, 12, 31, 6, 10, 2015); $d=strtotime("10:38pm April 15 2015");
|
Date() varmyDate=new Date() myDate.setFullYear(2008,7,9)
|
import time localtime =time.asctime(time.localtime(time.time()) ) import calendar cal =calendar.month(2016, 1)
|
time1 = Time.new |
15 |
1. Try -使用异常的函数应该位于 "try"代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。 2. Throw -这里规定如何触发异常。每一个 "throw"必须对应至少一个 "catch" 3. Catch - "catch"代码块会捕获异常,并创建一个包含异常信息的对象 try { catch(Exception $e
) { }
trigger_error("Value must be 1 orbelow",E_USER_WARNING); } "die()" 语句 和 set_error_handler("customError"); 创建回调函数 function customError($errno, $errstr){}
|
try语句测试代码块的错误。 catch语句处理错误。 throw语句创建自定义错误。 try { if(isNaN(x))throw "
NAN exception";
} catch(err) { } |
try: <语句> #运行别的代码 except <名字>: <语句> #如果在try部份引发了'name'异常 except <名字>,<数据>: <语句> #如果引发了'name'异常,获得附加的数据 else: <语句> #如果没有异常发生 try: fh = open("testfile", "w") fh.write("This is my test file for exception handling!!") except IOError: print "Error: can\'t find file or read data" else: print "Written content in the file successfully" 或者 try: <语句> finally: <语句> #退出try时总会执行 Raise
def temp_convert(var): try: return int(var) except ValueError, Argument: print "The argument does not contain numbers\n", Argument temp_convert("xyz");
|
raise相当于throw rescue相当于catch ensure相当于finally
begin #开始 raise.. #抛出异常 rescue [ExceptionType =StandardException] #捕获指定类型的异常缺省值是StandardException $! #表示异常信息 $@ #表示异常出现的代码位置 else #其余异常 .. ensure #不管有没有异常,进入该代码块 end #结束 |
16 |
|
window. document.getElementById("p1").innerHTML="New text!"; document.getElementById("image").src="landscape.jpg"; document.getElementById("p2").style.color="blue";
functionchangetext(id) { id.innerHTML="谢谢!"; }
document.getElementById("myBtn").οnclick=function(){ changetext(getId); };
varpara=document.createElement("p"); var node=document.createTextNode("这是新段落。"); para.appendChild(node);
var element=document.getElementById("div1"); element.appendChild(para); var child=document.getElementById("p1"); child.parentNode.removeChild(child); 或者para.removeChild(child);
|
|
|
17 |
多线程
|
|
|
|