享受Python和PHP动态类型检查语言的快感
前言
写这文章的时候特地查了资料,以确保我没有说错关于Python和PHP的类型机制。
所以这里放一张图,关于强弱类型与动态/静态类型检查的区分
从分类上看,PHP属于弱类型语言,而Python属于强类型语言,为什么可以把这两个语言放在一起呢,因为都是动态类型检查的,也就是定义变量时不用指定类型,解释器会根据赋值进行推断变量的数据类型。并且,最近在做Web和微信开发,同时在使用PHP和Python。
圈粉点
- 模块/库丰富,这个很好体现,在做Http请求这块,处理Json数据太方便了,构造Json结构字典/数组也超级方便(不仅是因为类型定义完全省略)
- 部署简单!跨平台成本真的低,本地(Windows系统)写完代码,测试通过,扔到服务器(Debian)上直接就可以运行(当然服务器上已经安装了Python环境),不用编译这点也很方便
黑点
- PHP变量最难受的就是哪个$符号,真的好别扭,感觉PHP写久了,键盘上的4键都坏了。
- Python最难受的是缩进,用IDE时,偶尔自动格式化代码会把某一块的缩进搞错了,代码多的时候,出了问题都很难找到,(不过Python一般很少一个模块内代码很多的,嘿嘿)
- PHP的设计怪怪的,我喜欢C#和Python这类按模块分类的设计,而不是PHP这样大部分功能都做成内置函数
比如PHP的Json解码是这样的:
$str = "Json代码"
$result = json_decode($str, true)
而Python是这样的:
import json
str = "Json代码"
result = json.loads(str)
两个代码展示的功能都是获取Json结构对应的数组,虽然PHP不用引入任何包/模块,但是就感觉很乱,我还是喜欢Python这样逻辑清晰的语言。
- 还有一个,PHP的类属性怎么用,好像没有读取器和存储器,查了一下解决方案,都挺麻烦的。像C#/Java这种就很方便,Python也有set/get的实现,操作也不复杂。例子:
from decimal import Decimal
class Fees(object):
def __init__(self):
"""Constructor"""
self._fee = None
@property
def fee(self):
"""
The fee property - the getter
"""
return self._fee
@fee.setter
def fee(self, value):
"""
The setter of the fee property
"""
if isinstance(value, str):
self._fee = Decimal(value)
elif isinstance(value, Decimal):
self._fee = value
if __name__ == "__main__":
f = Fees()
使用:
>>> f.fee
Decimal('1')
>>> f.fee = "2"
>>> f.get_fee()
Decimal('2')
这就相当的方便和舒服了。
由于时间关系,暂时写这些,后续我会在这篇文章中继续补充。
我的微信公众号:DealiAxy
微信公众号:「程序设计实验室」
专注于互联网热门新技术探索与团队敏捷开发实践,包括架构设计、机器学习与数据分析算法、移动端开发、Linux、Web前后端开发等,欢迎一起探讨技术,分享学习实践经验。