Python与PHP语法核心差异对比:从基础到控制流
本文通过一个登录验证的小作业,深入对比Python与PHP在语法层面的核心差异。内容涵盖代码风格(缩进与分号)、变量与常量命名规范、注释方式、数据类型(布尔、字符串、整型/浮点运算符)、输入输出处理(input/fgets)以及IF判断和WHILE循环的控制语法。旨在帮助熟悉PHP的开发者快速理解Python特性,或反之,实现两种语言的互通学习。
背景与学习目标
一、背景
近年来人工智能领域持续升温,笔者也萌生了深入学习该领域的想法。由于长期专注于PHP开发,对Python的接触相对有限,这导致在遇到深入问题时常因基础不扎实而受阻,例如在解决复杂逻辑时容易卡壳。因此,笔者决定从Python基础开始系统学习,以夯实根基。
相信有不少开发者与笔者有相似的处境:熟悉PHP或Python中的一门,但对另一门语言尚不熟悉,且有学习意愿。希望本文能通过具体的代码对比,为这类读者提供一定的参考和帮助。
二、知识点
近期笔者完成了一项小作业,要求使用Python代码实现:用户输入用户名和密码,认证成功后显示欢迎信息,若输错三次则退出程序。
本文将借助这个小作业,总结并分析PHP与Python在语法上的主要区别,重点涉及以下知识点:
- 代码整体风格
- 变量命名规范
- 常量命名规范
- 注释方式
- 数据类型
- 输入输出
- if语句使用
- while循环
Python语法核心差异
三、Python语法
Python对代码的空格缩进有严格要求,缩进错误会直接导致报错。此外,每行代码末尾无需使用分号(;),结构体的条件判断无需括号()包裹,执行体内部也不使用大括号{}。
3.1 代码示例
# -*- coding: utf-8 -*-
n = 0
while n < 3:
#累计次数,用于循环条件
n = n + 1
#定义账号和密码
uname = 'tangqingsong'
pwd = '123123'
#接收参数
username = input('请输入用户名:')
password = input('请输入密码:')
#判断用户输入的账号和密码是否正确,正确将提示成功,并且退出循环体
if uname == username and pwd == password:
print ('恭喜你,登陆成功~')
break
#三次机会用完的时候,提示错误次数,并告知即将退出
elif n == 3:
print('已错误', n, '次,即将退出...')
#如果在三次以内,提示还剩下几次机会
else:
print('抱歉,账号或密码不正确,你还有', 3 - n, '次机会')
3.2 基本语法
接下来,将从基本语法、数据类型、IF控制语句以及while循环四个维度,详细阐述Python代码中的相关规范。
基础语法:变量、常量与注释
3.2.1 基础语法
变量:在Python中,变量由数字、字母和下划线组成,但不能以数字开头,也不能是Python的关键字(如while、if、elif、else、break、continue等)。推荐使用驼峰命名法或下划线命名法两种规范格式。
常量:Python中常量的定义方式与变量类似,但约定俗成的做法是使用全大写字母来定义常量。
注释:Python支持单行注释,使用#符号;也支持多行注释,可以使用三个单引号'''或三个双引号"""包裹内容,例如'''注释内容'''。
数据类型与运算符
3.2.2 数据类型
在Python中,可以使用type(变量名)函数获取变量的数据类型。常用的数据类型包括布尔型、整型、浮点型和字符串等。在布尔型中,真对应True或1,假对应False或0,但需注意非0的数字在布尔语境下均被视为True。
字符串可以通过单引号或双引号定义,例如
a = '字符串'
b = "字符串"
也可以使用
a = '''可以换行
这里有换行
这里也有换行
的字符串
'''
#或者三个双引号
b = """可以换行
这里有换行
这里也有换行
的字符串"""
来定义多行字符串。字符串拼接可以使用加号+,或者使用乘法*数字的方式重复字符串,例如'abc' * 2的结果为'abcabc'。
3.2.3 数据类型
在整型和浮点型数据中,加减乘除运算与PHP类似,均使用+、-、*、/符号,%用于取余。Python还提供了一些特殊运算符:使用//可进行整除,结果不含小数部分,如下代码所示:
a = 10 // 3
# 得到的结果是 3
使用**可进行乘方运算,如下代码所示:
b = 2 ** 2
# 得到的结果是 8
输入输出处理
3.2.4 输入输出
输入输出:Python中使用print关键字打印变量,通过input函数接收用户终端输入的参数,例如
inp = input('用户输入的时候看到的提示 :')
需要注意的是,input接收的所有内容均为字符串类型。若需进行数值运算,必须对接收的变量进行类型转换。例如
a = int(变量名)
可将变量转换为整型,或通过
f = float(变量名)
转换为浮点型。
控制流:IF与WHILE循环
3.3 IF控制
在Python中,if语句的条件部分无需括号()包裹,执行体也不使用大括号{},但必须严格遵守缩进规范,如下代码所示:
# if a >3 and b==2:
缩进 满足条件1之后要做的事情
elif a>3 and b==3:
缩进 不满足条件1但满足条件2之后要做的事情
else:
缩进 上面的条件都不满足要做的事情
3.4 while循环
Python中的while循环方法与PHP类似,以下为伪代码示例:
while a == b:
循环执行的代码
可以使用break关键词退出循环,或使用continue跳过循环中的某一步骤,如下代码所示:
i = 1
while i < 10:
i += 1
# 非双数时跳过输出
if i%2 > 0:
continue
# 输出双数2、4、6、8
print i
# 当条件为8时候退出循环
if i == 8:
break
PHP语法核心差异
四、PHP语法
PHP对空格缩进没有严格要求,但与Python相反,每行代码末尾通常需要使用分号;结尾。结构体的条件判断必须使用括号()包裹,执行体内部也必须使用大括号{}。
4.1 代码示例
<?php
$n = 0;
while ($n < 3) {
#累计次数,用于循环条件
$n = $n + 1;
#定义账号和密码
$uname = 'tangqingsong';
$pwd = '123123';
#接收参数
fwrite(STDOUT, '请输入用户名:');
$username = trim(fgets(STDIN));
fwrite(STDOUT, '请输入密码:');
$password = trim(fgets(STDIN));
#判断用户输入的账号和密码是否正确,正确将提示成功,并且退出循环体
if ($uname == $username and $pwd == $password) {
print_r('恭喜你,登陆成功~');
break;
#三次机会用完的时候,提示错误次数,并告知即将退出
} elseif ($n == 3) {
print_r("已错误{$n}次,即将退出...");
} else {
#如果在三次以内,提示还剩下几次机会
$j = 3 - $n;
print_r("抱歉,账号或密码不正确,你还有{$j}次机会");
}
}
4.2 基本语法
接下来,将从基本语法、数据类型、IF控制以及while循环四个方面,探讨PHP代码中的相关规范。
基础语法:变量、常量与注释
4.2.1 基础语法
变量:PHP中变量由数字、字母和下划线组成,必须以$符号开头,且第一个字符不能是数字。由于PHP变量均以$开头,因此几乎不存在关键字冲突的问题,但编写代码时尽量避免覆盖系统变量。同样推荐使用驼峰命名法或下划线命名法两种规范格式。
常量:PHP中常量也约定俗成使用全大写定义,但有专门的定义格式。例如定义DAXIA的值为'tangqingsong'时,代码如下所示:
const DAXIA = 'tangqingsong';
注释:PHP支持多种注释方式,可以使用#注释单行代码,使用//注释单行代码,或使用/** */注释多行代码,如下代码所示:
#这是行注释
//这是行注释,一般习惯是使用此种方式
/**
* 块注释,一般在自定义函数和类方法的时候使用
*/
数据类型与字符串处理
4.2.2 数据类型
在PHP中,可以使用var_dump(变量名)同时打印变量的类型和值。常用数据类型包括布尔型、整型、浮点型和字符串等。布尔型中,真对应True或1,假对应False或0,非0数字均为True。字符串可通过单引号或双引号定义,区别在于单引号内不解析变量,而双引号可以解析变量,如下代码所示:
$n = 123;
a = '字符串';
b = "字符串{$n}";
定义大块文本时,还可以使用定界符方式,如下代码所示:
$a = <<<EF
这里是大文本内容,可以写任意文本,EF是自定义的,大家也可以把EF写成DAXIA,但是必须前后对应,后面的必须定格,后面一个“EF”不能用空格之类的字符;
EF;
字符串拼接使用符号.,如下代码所示:
$name = 'daxia' . 'tangqingsong';
4.2.3 数据类型
PHP中整型和浮点型的加减乘除运算与Python类似,均使用+、-、*、/符号,%用于取余。
输入输出处理
4.2.4 输入输出
输入输出:PHP中使用print_r打印变量。接收标准输入相对复杂,需先通过fwrite向终端输出提示,再通过fgets函数读取用户输入,最后使用trim去除末尾空格,例如
fwrite(STDOUT, '请输入用户名:');
$username = trim(fgets(STDIN));
通过上述方式接收的内容均为字符串类型。由于PHP是弱类型语言,通常无需显式转换数据类型。若需进行类型转换,方法与Python大致相同,如下代码所示:
a = intval(变量名)
可将变量转换为整型,或通过
f = floatval(变量名)
转换为浮点型。
控制流:IF与WHILE循环
4.3 IF控制
if条件:PHP中if语句的使用方法如下代码所示:
<?php
if (a >3 and b==2){
满足条件1之后要做的事情
} elseif (a>3 and b==3){
不满足条件1但满足条件2之后要做的事情
} else {
上面的条件都不满足要做的事情
}
4.4 while循环
while循环:PHP中while的条件必须使用括号()包裹,执行体也必须使用大括号{}包裹。执行体虽不强制要求严格缩进,但为了代码美观,通常会进行缩进,以下为伪代码示例:
<?php
while ($a == $b){
//循环执行的代码
}
可以使用break关键词退出循环,或使用continue跳过循环中的某一步骤,如下代码所示:
<?php
$i = 1;
while ($i < 10) {
$i += 1;
//非双数时跳过输出
if ($i % 2 > 0) {
continue;
}
//输出双数2、4、6、8
print_r($i);
//当条件为8时候退出循环
if ($i == 8) {
break;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









