PHP、Python和Shell的语法对比

作者: 日期:2019-10-28 10:52:10

PHP、Python和Shell的语法对比

都是动态解释型的脚本语言。PHP常用于Web开发,Python常用于科学计算,Shell常用于系统脚本。本文中Python版本默认都是Python3

包管理

PHP有composer包管理工具,有自动加载机制,有一次和多次之分,即存在require_once和include_once。 Python有setup-tools和pip模块管理工具,使用时需要需要import或from A import B,无需担心多次引入。 Shell使用source命令或.引入其他文件

基础语法

PHP类似C语言风格,Python则是独树一帜的强制性的缩进风格,{}用冒号代替,一起的同级缩进,按先后顺序执行。 Shell的也是独树一帜的风格,没有冒号。

PHP语句结尾必须分号结束,Python的分号可以省略,Shell结尾的分号也可以省略。

PHP注释和C语言相似,Python多行使用三个引号,Shell多行注释使用heredoc

PHP和Shell中单引号不解析变量,双引号解析变量,Python中都不解析变量

PHP中变量定义和引用都要加$,Shell中定义不加,引用加,Python中定义和引用都不加。

数据类型

Shell中默认都是字符串,定义数字,需要使用declare声明,数字计算需要使用$((1+1))或$[1+1]等形式

PHP和Shell中整型都有大小限制,一般2字节或4字节,而Python中可以到28字节,长度几乎没有限制,这也是常用于科学计算的原因。

字符串连接方式不同,PHP中使用.,Shell中默认所有字符都是字符串,所以无需连接符,Python中使用加号或空格连接。 Python和Shell都支持字符串切片,而PHP可以使用substr函数实现

PHP和Shell支持索引数组和关联数组,Python支持列表和字典,而且支持列表切片。数组一般以逗号分隔,但Shell中数组以空格分隔,()包裹。

Python中()表示tuple(读踏破,而不是提欧珀),元组是只读版的列表,[]表是列表,{}表示集合或字典,类似JS中对象的写法。 Python中处理这些数据结构都有相应的函数

Python中数组表示各个元素类型都相同的列表,numpy中有数组。

PHP中有===,表示类型和值都一样,Python没有这样的比较,默认都是类型一样才再比较值,即仅有==,类型比较可以用type

Python中,字符串和数字不能直接拼接,需要使用str转换

Python中基础类型,数字,字符串,元组都是只读的,"1" is "1"会返回False,is用于身份比较,即比较id返回的值

其他

Python中for语句没有PHP中那种类似C语言的风格for(i=0;i<10;i++),需要使用for i in range(1,20),shell中可使用 for ((i=1; i

$v),Python中可以使用for i, v in enumerate(list1), Shell中可使用for i in $(seq 1 ${#array[*]}),通过${array[$[$i-1]]}获取元素的值

其他很多高级特性,都大同小异,这里不再说明

PHP代码:<?php

function compute($i, $j=0, $operator="min"){

return in_array($operator, ["min", "max"]) ? $operator($i,$j) : false;

}

if(true){

//test

/*

这是多行注释

这是多行注释

这是多行注释

*/

$test="hello php";

echo "$test:".$test;

echo compute(2, 3);

echo compute(4, 0, "max");

}

?>

<?php if(true): ?>

<!--test-->

<!--

这是多行注释

会显示在HTML文档中

-->

test

<?php endif;?>

Shell代码:function compute(){

if [ $# -ne 3 ]; then

echo "please input 3 numbers" && exit 1

fi

if [ "$3" == "min" ]; then

echo $(($1 > $2 ? $2 : $1))

else

echo $(($1 > $2 ? $1 : $2))

fi

}

if [ 1 ]; then

#test

: <<EOT

这是多行注释

这是多行注释

这是多行注释

EOT

test="hello shell"

test2=${test:0:2}

echo "$test":${test}

fi

compute 2 3 min

compute 2 3 max

Python代码:def compute(i, j=0, operator="min"):

if operator == "min":

print(min(i, j))

else:

print(max(i,j))

compute(j=8, i=3)

if True:

# hello

"""

这是多行注释

这是多行注释

这是多行注释

"""

test="hello python"

test2=test[0:2]

print("test" ":"+test)