• 享受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

  • 相关阅读:
    ASCII 32个控制字符含义
    MFC中获取指定打印机的打印队列的方法
    某品牌led报文信息分析
    SQL Server 企业版没有 Management Studio管理工具 无法安装工作站组件 的解决方法(无需卸载重装)
    xla文件修改办法
    关于ALILIB
    编译器如何根据头文件来找到相应实现的cpp文件?
    C#调用C++接口提示找不到指定的模块解决方法,本机正常
    DataGridView中实现右击选中当前行功能,并通过ContextMenuStrip获取当前行
    C#递归获取文件列表
  • 原文地址:https://www.cnblogs.com/deali/p/7820282.html
Copyright © 2020-2023  润新知