博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
享受Python和PHP动态类型检查语言的快感
阅读量:5336 次
发布时间:2019-06-15

本文共 1533 字,大约阅读时间需要 5 分钟。

前言

写这文章的时候特地查了资料,以确保我没有说错关于Python和PHP的类型机制。

所以这里放一张图,关于强弱类型与动态/静态类型检查的区分
b0aeb7ffd1667b9162e5329154d43777_hd.jpg

从分类上看,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 jsonstr = "Json代码"result = json.loads(str)

两个代码展示的功能都是获取Json结构对应的数组,虽然PHP不用引入任何包/模块,但是就感觉很乱,我还是喜欢Python这样逻辑清晰的语言。

  • 还有一个,PHP的类属性怎么用,好像没有读取器和存储器,查了一下解决方案,都挺麻烦的。像C#/Java这种就很方便,Python也有set/get的实现,操作也不复杂。例子:
from decimal import Decimalclass 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 = valueif __name__ == "__main__":    f = Fees()

使用:

>>> f.feeDecimal('1')>>> f.fee = "2">>> f.get_fee()Decimal('2')

这就相当的方便和舒服了。

由于时间关系,暂时写这些,后续我会在这篇文章中继续补充。


我的微信公众号:DealiAxy

qrcode_for_gh_fb62c9c48c90_258-1.jpg

转载于:https://www.cnblogs.com/deali/p/7820282.html

你可能感兴趣的文章
Kafka集群的安装和使用
查看>>
语言的转义字符及正则表达式的转义字符的表示
查看>>
C++_归并排序
查看>>
javascript初始笔记
查看>>
02.MySQL.存储引擎-事务-隔离级别-锁
查看>>
html的文字标记
查看>>
优先队列-优先级别
查看>>
jQuery实现,动态自动定位弹窗。JS分页,Ajax请求
查看>>
iis应用程序池 内存溢出错误 System.OutOfMemoryException
查看>>
2017.3.19 for
查看>>
MFC中的DLL、LIb文件的创建、使用
查看>>
LeetCode_Jump Game II
查看>>
无法将类型“int”隐式转换为“string”
查看>>
Android NETWORK_PROVIDER onLocationChanged不会被调用的部分原因
查看>>
快速排序算法所有版本的c/c++实现
查看>>
JVM基础知识2 垃圾收集器与内存分配策略
查看>>
Java课程设计——象棋(201521123042 姚佳希)
查看>>
IFrame实现页面无刷新
查看>>
JAVA如何正确地写出单例模式(转)
查看>>
写技术札记的生涯开始了!
查看>>