PHP和Python都是解释性语言,用过PHP一般再学Python就比较容易,毕竟很多概念都一样。

当然,反过来也一样,会Python再入手PHP,也很简答。

不过如果要使用框架,那就得稍微多用些力气。

这里我们以语言本身为主,就暂不讨论框架。

1 用途

我是先用PHP,再学Python,所以对他们的用途也算清楚。

PHP以WEB服务起家,而且多年来都是以这个为重点,所以PHP在WEB方面是个强项。

Linux + Nginx/Aapche + MySQL + PHP环境(俗称LNMP/LAMP)以部署简单、性能高效著称,是各个服务器厂商的必装套件。

可以这样说,PHP是世界上最好的WEB后端语言。

Python在WEB上比PHP起步晚,这方面略逊一筹。

不过Python简单易用,所以用途广泛,运维、计算科学、人工智能、WEB几乎各个计算机领域都有它的存在。

特别是这几年人工智能的崛起,Python更是如日冲天。

趁着这股热劲,我们也花个10分钟,把它学到手吧。

2 语法

我们以具体的程序来展示PHP和Python之间的区别,这比直接用文字直观些。

起步最佳程序是hello world,我们就从hello Word程序开始。

如下,左边是helloword.php,右边是helloworld.py。

<?php

function helloWorld()

{

$a = 'Hello World';

echo $a;

}

helloWorld();

def hello_world():

a = 'Hello World'

print(a)

hello_world()

用 php helloworld.php和python helloworld.py分别执行这两个文件,打印结果是一样的。

PHP文件必须以<?php开头,Python不需要

PHP用function声明函数,Python用def

PHP语句必须以分号;结尾,Python不需要以;分号结尾,当然用;结尾也可以,一般在一行内有多个语句的时候用,但是不建议这样写。

PHP用大括号{}表示一个程序块,Python用4个空格的缩进表示一个程序块

PHP变量以$符号开头,Python变量不需要$符号开头

(非强制)PHP依据PSR格式规范,方法名和变量名以小驼峰命名,Python建议函数名用小写,并以下划线分割,函数内变量用小写,函数外变量大小写均可。

3 字符串

字符串是所有程序中非常重要的特性,PHP和Python处理字符串的方式相差很大。

PHP以函数处理字符串,Python中字符串是一个对象。

3.1 字符串声明和使用

mb_internal_encoding("UTF-8");

$a = '谁不会休息,谁就不会工作。';

$b = '--列宁';

echo $a . $b;

$c = ' --杜牧';

$d = " 清明时节雨纷纷,

路上行人欲断魂。

借问酒家何处有?

牧童遥指杏花村。$c";

echo $d;

# coding: utf-8

a = '谁不会休息,谁就不会工作。'

b = '--列宁'

print(a + b)

c = ' --杜牧'

d = """ 清明时节雨纷纷,

路上行人欲断魂。

借问酒家何处有?

牧童遥指杏花村。%s""" % c

print(d)

PHP文件内字符串一般以文件编码格式为准,Python一般需要在文件头声明,如上的# coding: utf-8,所有字符串以utf-8格式编码。PHP也可以用mb_internal_encoding("UTF-8");方法实现同样效果。

PHP中单行和多行字符串用单引号和双引号都可以,Python中单行字符串用单引号或双引号,多行字符串用三个双引号括住。

PHP中双引号内可以引用变量,Python中不可以,须用%或format()方法格式化。

字符串拼接PHP用点号.,Python用加号+。PHP中如果用点号拼接字符串和整型,整型自动转换为字符串类型再拼接,Python中则不能拼接字符串和整型,必须强制将整型转换为字符串类型后再用+拼接,否则程序出错。

3.2 字符串处理

$a = 'PHP to Python';

echo $a; # 输出完整字符串

echo $a{1}; # 输出:H

echo substr($a, 4, 2); # 输出:to

echo substr($a, 4); # 输出:to Python

echo substr($a, 0, 6); # 输出:PHP to

echo str_repeat($a, 2); # 输出:PHP to PythonPHP to Python

echo strpos($a, 'PHP') !== false; # 输出:true

echo strpos($a, 'Java') === false; # 输出:true

a = 'PHP to Python'

print(a) # 输出完整字符串

print(a[1]) # 输出:H,通过索引获取字符

print(a[4:6]) # 输出:to,截取字符串

print(a[4:]) # 输出:to Python,截取字符串

print(a[:6]) # 输出:PHP to,截取字符串

print(a*2) # 输出:PHP to PythonPHP to Python,重复字符串

print('PHP' in a) # 输出:true,判断字符串包含

print('Java' not in a) # 输出:true,判断字符串不包含

说明已经写在注释上了。

对于截取字符串,PHP的函数是offset加length,Python是start加end,但不包括end项。

4 注释

还是以上面的程序为例,我们加上注释。

<?php

/**

* 这是PHP的多行注释

*/

function helloWorld()

{

$a = 'Hello World';

// 这是PHP的单行注释

echo $a;

}

# 这是PHP的另外一种单行注释

helloWorld();

def hello_world():

"""

这是Python的多行注释,函数注释写在函数体内

:return:

"""

a = 'Hello World'

# 这是Python的单行注释

print(a)

# 同样是单行注释

hello_world()

具体区别请看代码。

5 数组

PHP中的序列类型只有数组。

5.1 元组、列表和字典

Python中分为3种:元组(tuple)、列表(list)和字典(dictionary)。

a = (1, 2, 3, 'hello')

b = [1, 2, 3, 'hello']

c = {'name': 'gary', 'url': 'www.awaimai.com'}

第一个是元组,元组是不能更改的类型,只能查询,不能增改删元素。

a[3] # 查找第4个元素,返回hello字符串

为了和运算符中的括号区别,单个元组也需要在元素后面加一个逗号,如:a = (1, )。

第二行是列表,类似PHP中的数字索引数组,可以增查改删元素如:

b.append(10) # 在列表最后增加元素10,列表变为:[1, 2, 3, 'hello', 10]

b[0] # 查找第1个元素,返回数字1

b[2] = 10 # 修改第3个元素为10,列表变为:[1, 2, 10, 'hello']

b.pop() # 删除最后一个元素并返回它的值,用pop(0)可以删除第1个元素

第三行是字典,类似PHP中的字符串下标数组,可以增查改删元素:

c['country'] = 'china' # 增加一个减值对应元素

c['url'] # 根据键名查找值,返回字符串 www.awaimai.com

c['url'] = 'awaimai.com' # 修改值

c.pop('name') # 根据键名删除元素

可以看到,元组、列表、字典的查询方式都是用中括号:[]

5.2 类型转换

实际使用时,我们还可以转换类型:

list(a) # 元组转换成列表,可以,返回:[1, 2, 3, 'hello']

dict(a) # 元组转换成字典,不可以,出错

tuple(b) # 列表转换成元组,可以,返回:(1, 2, 3, 'hello')

dict(b) # 列表转换成字典,不可以,出错

tuple(c) # 字典转换成元组,可以,返回:('url', 'name')

list(c) # 字典转换成列表,可以,返回:['url', 'name'],等同于c.keys()

# 要返回值列表,请用c.values()

6 类和对象

class Person:

# 类属性,所有方法都可以调用

age = 100

# 构造函数

# 同时定义一个name的类属性,并赋值,所有方法都可以调用

def __init__(self, name):

self.name = name

# self代表类示例,相当与PHP中的$this

def get_name(self):

return self.name

# 在定义类方法时,必须手动在第一个参数传入类实例,

# 名称可以是self,如上一个方法,也可以是别的,如下,

# 但是一般建议用self

def get_age(this):

return this.age

class User(Person):

# 双下划线开头,private属性,仅类内部可以调用

__country = 'China'

# 单下划线开头,protected属性

_address = 'My City No 1'

"""

User类继承自Person类

用 super().__init__() 方式调用父类构造函数

"""

def __init__(self, name, url):

super().__init__(name)

self.url = url

def get_url(self):

return self.url

def get_country(self):

return self.__country

# 实例化一个类,并调用其属性和方法

user = User('gary', 'www.awiamai.com')

print(user.name, user.url, user.age)

print(user.get_name(), user.get_url(), user.get_age(), user.get_country())

持续更新中...

php python-10分钟从PHP到Python相关推荐

  1. 如何用计算机自动回复微信,10分钟教你用Python实现微信自动回复功能

    01 前言&&效果展示 相信大家都有忙碌的时候,不可能一直守在微信上及时回复消息.但微信又不能像QQ一样设置自动回复.无妨,今天,我们就来用Python实现微信的自动回复功能吧,并且把 ...

  2. 10分钟教你用python打造贪吃蛇超详细教程

    更多精彩尽在微信公众号[程序猿声] 10分钟教你用python打造贪吃蛇超详细教程 在家闲着没妹子约, 刚好最近又学了一下python,听说pygame挺好玩的.今天就在家研究一下, 弄了个贪吃蛇出来 ...

  3. 10分钟教你用python如何正确把妹

    前言 今天没妹子约,刚好研究一下.如何用神奇的python打造一个把妹神器吧.看完这个,你们就能走向人生巅峰,迎娶白富美啦. 我知道你们想看看效果 当然啦,这只是测试版的效果,真正的版本可比这个厉害多 ...

  4. 10分钟教你用Python玩转微信之抓取好友个性签名制作词云

    10分钟教你用Python玩转微信之抓取好友个性签名制作词云 01 前言+展示 各位小伙伴我又来啦.今天带大家玩点好玩的东西,用Python抓取我们的微信好友个性签名,然后制作词云.怎样,有趣吧~好了 ...

  5. 10分钟带你了解python_ComeOn!10分钟带你了解Python的变量和数据类型

    对任何语言来说,变量和数据类型都是非常重要和基础的内容.这篇文章就带你用10分钟的时间,学会Python的变量和数据类型这个知识点. 一.知识点 python 关键字 变量的定义与赋值 input() ...

  6. 10分钟教你用python下载和拼接微信好友头像图片

    相信微信大家是用得再多也不过了.那么,对于python+微信,又能玩出什么新的花样呢?下面小编就给大家带来一个好玩的东西.用python下载所有的微信好友的头像,然后拼接成一张大图.这样,大家就可以转 ...

  7. python代码大全p-【python】10分钟教你用python一行代码搞点大新闻

    准备 相信各位对python的语言简洁已经深有领会了.那么,今天就带大家一探究竟.看看一行python代码究竟能干些什么大新闻.赶紧抄起手中的家伙,跟我来试试吧. 首先你得先在命令行进入python. ...

  8. python小游戏编程实例-10分钟教你用Python写一个贪吃蛇小游戏,适合练手项目

    另外要注意:光理论是不够的.这里顺便总大家一套2020最新python入门到高级项目实战视频教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,还可以跟老司机交 ...

  9. 10分钟教你用Python实现微信自动回复

    01 前言&&效果展示 相信大家都有忙碌的时候,不可能一直守在微信上及时回复消息.但微信又不能像QQ一样设置自动回复.无妨,今天,我们就来用Python实现微信的自动回复功能吧,并且把 ...

  10. 10分钟教你用Python实现微信翻译机器人

    相信大家在日常学习或者是阅读英文文章的过程中,难免会出现几个不认识的单词,或者想快速翻译某段英文的意思. 今天,利用Python爬虫等知识,教大家打造一个微信下的翻译小助手.好吧,开始干活. 先来看看 ...

最新文章

  1. hadoop在Browse Directory中文件下载不了
  2. Linux守护进程简介
  3. 数学图形(2.23)Cylindric sine wave柱面正弦曲线
  4. Linux系统编程(七)消息队列
  5. Linux文件查找命令find用法整理(locate/find)
  6. [洛谷1533] 可怜的狗狗
  7. 浅谈C++ Lambda 表达式(简称LB)
  8. 成功的人不是最聪明的那个人,但绝对是一个交流很棒的人
  9. eclipse如何设置成保护眼的背景色
  10. 复刻SHEIN,中国跨境供应链大突围 | 钛媒体深度
  11. SimpleDateFormat和DateFormat的基本使用(format和prase)
  12. iphone 通知声音_如何在iPhone上掌握通知
  13. python模拟12306购票_西甲彩经:巴塞罗那取连胜,塞维利亚不败
  14. 科罗拉多州立大学计算机科学,2020年科罗拉多州立大学排名TFE Times美国最佳计算机科学硕士专业排名第81...
  15. 首期「OSCHINA 开源软件趋势榜」榜单公布 | 有奖征文等你来
  16. Higgs全球区块链投融资交流会(香港站)成功举办,路演项目备受瞩目
  17. PacBio相关知识
  18. 美国邮编及电话号码区域查询
  19. 亲民地理38期-江西极顶武功山(下)
  20. freshman refresh

热门文章

  1. [转]Linux下如何安装软件
  2. xnawindowsph日本 Phone x Phone iphone 4 座机 复古电话手机座 听筒 防辐射
  3. 搭建无人值守安装服务器(CentOS)
  4. 【BZOJ1086】[SCOI2005]王室联邦 树分块
  5. 数据解析框架之Gson
  6. 417,你的能量不容低估,也不能高估
  7. angularjs(1)
  8. base(C# 参考)
  9. HP服务器RAID配置
  10. 初学数位DP--hdu 2089