Python与PHP语法核心差异对比:从基础到控制流

巷口听风
巷口听风
发布时间:2026-10-13 | 2人浏览过
原创

本文通过一个登录验证的小作业,深入对比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;
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表