V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yuanse
V2EX  ›  问与答

Python 是哪种类型语言

  •  
  •   yuanse · 2020-04-29 09:07:51 +08:00 · 2605 次点击
    这是一个创建于 1648 天前的主题,其中的信息可能已经有所发展或是发生改变。

    基础比较薄弱,今天看了下不是特别清楚到底是强类型还是弱类型,还有静动态,wiki 看了下还是比较模糊,

    tutuk5
        1
    tutuk5  
       2020-04-29 09:10:26 +08:00
    动态的,变量不用定义类型
    fgwmlhdkkkw
        2
    fgwmlhdkkkw  
       2020-04-29 09:13:04 +08:00   ❤️ 1
    可以在运行时创建新的类型( Python 当然可以),就是动态语言吧……我这么理解。
    “静动态”是什么?支持持反射的吗?
    yuanse
        3
    yuanse  
    OP
       2020-04-29 09:18:32 +08:00
    @fgwmlhdkkkw 静态和动态
    Orenoid
        4
    Orenoid  
       2020-04-29 09:19:03 +08:00   ❤️ 1
    动态类型是肯定的。姑且算是强类型吧,但争议比较大。
    superrichman
        5
    superrichman  
       2020-04-29 09:19:25 +08:00 via iPhone
    python 是动态强类型语言
    ClericPy
        6
    ClericPy  
       2020-04-29 09:20:49 +08:00
    随手一搜到处都是
    为什么说 Python 是强类型语言? - 知乎 - https://www.zhihu.com/question/43498005
    yuanse
        7
    yuanse  
    OP
       2020-04-29 09:22:04 +08:00
    @tutuk5 那么强弱类型呢,有些写的 “强类型语言:不允许改变变量的数据类型,除非进行强制类型转换。” python 是弱类型的语言么,查资料看着看着就蒙了
    klesh
        8
    klesh  
       2020-04-29 09:22:19 +08:00 via Android
    强类型
    yuanse
        9
    yuanse  
    OP
       2020-04-29 09:24:04 +08:00
    @ClericPy 只是看公司文档别人写的 python 是弱类型语言😂
    iConnect
        10
    iConnect  
       2020-04-29 09:26:55 +08:00 via Android
    @yuanse 弱类型允许 str + int 不出错,大多语言都会出错,js 不会。
    superrichman
        11
    superrichman  
       2020-04-29 09:27:17 +08:00
    @yuanse
    ```
    a = 1
    b = "b"
    a + b
    ```
    这段代码在 python 里会报错,在 js 里会正常执行。这就是强类型和弱类型的区别。
    Norie
        12
    Norie  
       2020-04-29 09:30:33 +08:00 via iPhone
    胶水型
    ClericPy
        13
    ClericPy  
       2020-04-29 09:31:35 +08:00   ❤️ 1
    @yuanse #9 在 V2EX 这种地方都有看到说它弱类型的, 心里有数就行了, 我都懒得和那群人争辩了...
    tairan2006
        14
    tairan2006  
       2020-04-29 09:35:23 +08:00
    强类型动态语言

    弱类型语言,一般人应该只接触过 js 和 bash
    hanyceZ
        15
    hanyceZ  
       2020-04-29 09:38:37 +08:00
    PYTHON 是一门动态解释性的强类型定义语言:编写时无需定义变量类型;运行时变量类型强制固定;无需编译,在解释器环境直接运行。
    thfurior
        16
    thfurior  
       2020-04-29 09:42:17 +08:00
    强类型 动态
    yuanse
        17
    yuanse  
    OP
       2020-04-29 09:52:13 +08:00
    感谢大家的指正
    fank99
        18
    fank99  
       2020-04-29 09:57:33 +08:00
    动态强类型,js 那种就动态弱类型
    blodside
        19
    blodside  
       2020-04-29 10:24:27 +08:00
    从类型上看:强类型,没法 cast,不像 c/c++这些弱类型语言可以随便 cast 。但是是动态的,运行时才能确定类型。
    现在也不全是隐式类型了,可以和 ts 一样标类型了。
    wtsamuel
        20
    wtsamuel  
       2020-04-29 12:31:26 +08:00
    胶水
    pisc
        21
    pisc  
       2020-04-29 13:55:57 +08:00 via Android
    1. 动态类型和静态类型很好区分,主要是看类型检查的时间是否在运行之前进行。

    2. 然后根据语言的 specification 来判断是否是动态类型,比如 Python 通常允许不进行类型检查就执行,那么通常说它就是动态类型语言。另外如果你总是使用 mypy 在 Python 做类型检查,那么你说你用的 Python 是静态类型也没问题。

    3. 不用使用强、弱类型这个概念,因为就连学术上也没个标准的说法,这不怪谁,PL 在术语标准化方面做的不是很好。

    4. 楼上说 Python 是强类型 /弱类型什么的,几乎都是道听途说,不要信。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2501 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 82ms · UTC 10:27 · PVG 18:27 · LAX 03:27 · JFK 06:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.