ITPub博客

首页 > 应用开发 > > PHP、Python和Shell的语法对比

PHP、Python和Shell的语法对比

作者:25minutes 时间:2019-10-28 13:54:58 0 删除 编辑

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<=100; i ++))、for i in {1..100}或for i in $(seq 1 100)

函数参数,PHP和Python都可以使用等号设定默认值,PHP中间不能省略,顺序不能自定义,Python可以带上参数的名字,省略部分参数, 顺序也可以自定义,Shell一般使用$1等位置变量获取函数的参数

函数中,PHP和Python无法直接使用外部变量,可使用global引入,Shell可在函数中直接使用外部变量,默认变量是全局的

获取数组值的索引,PHP中可以使用foreach($arr as $k=>$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 args' && 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)

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4328/viewspace-3140857/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-07-17

  • 博文量
    336
  • 访问量
    14901