首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python到底是强类型语言,还是类型语言

我们主要的分歧就在于:Python 到底是不是强类型语言?我认为是,而他认为不是。 他写了一篇很长的文章《谁告诉的你们Python是强类型语言!站出来,保证不打你!》...一般而言,编译器有很少(合理)隐式类型转化的是强类型语言,有较多(过分)隐式类型转化的是类型语言。...另外还有一个经典的例子,C 语言之父 Dennis Ritchie 曾经说 C 语言是一种“强类型但是检查”的语言。如果对照成前文的定义,那他其实指的是“静态类型类型”。...其关键则是程序对于 untrapped errors 的检查强度,在某些实际已出错的地方,类型程序并不作捕获处理,例如 C 语言的一些指针计算和转换,而《C 程序员十诫》的前几个都是类型导致的问题。...[]和[undefined]==false的结果都为 true…… (4)C++ 是不是类型语言? 前文提到《流畅的Python》中将 C++ 归为强类型,但实际上它应该被归为类型。

3.2K43

C语言进阶小技巧,符号和引用

强符号和符号 在同一作用域下不能定义同一个变量或函数,很多C语言学习者都理所当然地这么认为。...这个其实是是有所偏颇的,GNU C对标准C语言进行了扩展,在GCC中,对于符号(在编译时,变量和函数都被抽象成符号)而言,存在着强符号和符号之分。...是的,是否支持这个特性是由不同的C语言标准决定的。 对于C/C++而言,编译器默认函数和已初始化的全局变量为强符号,而未初始化的全局变量为符号。...强/符号和强/引用的作用 这种符号、引用的扩展机制在库的实现中非常有用。 我们在库中可以使用符号和引用机制,这样对于一个符号函数而言,用户可以自定义扩展功能的函数来覆盖这个符号函数。...为什么永远不会有语言取代 C / C++ ?

92120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python 引用 weakref

    Python 引用的使用量特别多,但引用使用不慎很可能影响垃圾对象回收,这时就需要引用解决类似问题。...背景 垃圾回收 和许多其它的高级语言一样,Python使用了垃圾回收器来自动销毁那些不再使用的对象。每个对象都有一个引用计数,当这个引用计数为0时Python能够安全地销毁这个对象。...引用的创建 使用weakref模块,你可以创建到对象的引用,Python在对象的引用计数为0或只存在对象的引用时将回收这个对象。...引用 官方文档 weakref 模块允许 Python 程序员创建对对象的引用。...因此,Python 在类型对象中提供一个字段 tp_weaklistoffset ,记录引用链表头指针在实例对象中的偏移量。

    1.1K10

    Python 引用的使用

    和许多其它的高级语言一样,Python使用了垃圾回收器来自动销毁那些不再使用的对象。每个对象都有一个引用计数,当这个引用计数为0时Python能够安全地销毁这个对象。...引用的主要作用就是减少循环引用,减少内存中不必要的对象存在的数量。 使用weakref模块,你可以创建到对象的引用,Python在对象的引用计数为0或只存在对象的引用时将回收这个对象。...创建引用 你可以通过调用weakref模块的ref(obj[,callback])来创建一个引用,obj是你想引用的对象,callback是一个可选的函数,当因没有引用导致Python要销毁这个对象时调用...一旦没有了对这个对象的其它的引用,调用引用将返回None,因为Python已经销毁了这个对象。 注意:大部分的对象不能通过引用来访问。...在Python删除了一个引用的对象之后,使用代理将会导致一个weakref.ReferenceError错误。 循环引用 前面说过,使用引用,可以解决循环引用不能被垃圾回收的问题。

    1.4K20

    Python weakref (引用 ) 教程

    3.2 引用介绍与使用 3.3 引用使用举例 四、weakref.ref() 和weakref.proxy() 的区别 前言 首先提一点:大家遇到python模块的使用问题,尽可能去 python...Python 的其他实现有更复杂的垃圾回收程序,而且不依赖引用计数,这意味着,对象的引用数量为零时可能不会立即调用 del 方法。...一旦这些标签别撕没了,也就是对象的引用为0的时候,就出触发python的垃圾回收的机制。 三、引用 这个时候可以引出我们心心念的引用了。 3.1 引用是什么?...而引用不会影响垃圾回收的计数。也就是说,一个对象,只要强引用个数为0,就会触发python的垃圾回收机制,而不管你有多少个引用,都是没关系的。...然而, int 、 tuple 的子类实例 也不能作为应用对象. 3.3 引用使用举例 任何的数据结构都是可以引用的,我们要多利用weakref包中提供的工具类 # 前提: Python 控制台会自动把

    1K50

    C语言中的强符号和符号

    符号:未初始化的全局变量所生成的符号。 很多情况下写出的代码会出现链接的错误,符号重定义,这是因为在不同的源文件中定义了同名的全局变量并且都进行了初始化。...那么新的问题是: (1)出现强符号和符号,选择哪一个? (2)若出现多个同名的强符号,最终怎么选择? (3)若出现多个同名的符号,最终会怎么选择?...(2)如果出现强符号和符号,编译器最终会选择强符号。 (3)如果出现多个同名符号,编译器最终会选择内存占用量最大的那个符号。...源文件是独立进行编译的 //a.c int x;//符号 void func(){ x = 20; //往x的内存上写20,写4个字节 编译阶段就完成的 } //b.c #include<...链接的完成选择强符号 printf("x = %d,y = %d\n",x,y); return 0; } 在 gcc中,可以通过__attribute__((weak))来强制定义任何一个符号为符号

    1.6K20

    python 基础认识,类型,解释执行

    我们的第一个 python 程序就这么愉快的完成了。下面我们就开始来认识 python类型 首先 python类型语言,相对于强类型语言,它不需要声明变量的类型。...了解 JavaScript 的同学都知道,它也是类型语言,声明变量时也不需要指定类型,但好歹我们还需要使用声明关键词的(虽然可以省去不用,但是非常不建议)。...age = 0; // python 直接声明 解释执行 第二个特点是它属于「解释执行」类型语言。就如开头我们所说会进入 python 解释器模式,而这个解释器就是用来解释 python 语言的。...例如 C、C++:这类语言就属于「编译执行」,它们的优点在于只编译一次,执行速度快。而缺点是不能夸平台。...而像 Python、JavaScript 这类语言属于「解释执行」,它们的优点在于跨平台,不管在window 还是其他平台都可以执行。但缺点就是每次执行都会编译所以速度慢。

    74020

    编译型语言、解释型语言、静态类型语言、动态类型语言、强类型语言类型语言概念与区别

    主要语言Python、Ruby、Erlang、JavaScript、swift、PHP、Perl。...C#和Java是解释型语言也是静态类型语言。 强类型语言类型语言 1、强类型语言: 强类型语言,一旦一个变量被指定了某个数据类型,如果不经过强制类型转换,那么它就永远是这个数据类型。...主要语言:Java、C#、Python、Object-C、Ruby 2、类型语言: 数据类型可以被忽略,一个变量可以赋不同数据类型的值。一旦给一个整型变量a赋一个字符串值,那么a就变成字符类型。...主要语言:JavaScript、PHP、C、C++(C和C++有争议,但是确实可以给一个字符变量赋整形值,可能初衷是强类型,形态上接近类型)3、注意: 一个语言是不是强类型语言和是不是动态类型语言也没有必然联系...Python是动态类型语言,是强类型语言。 JavaScript是动态类型语言,是类型语言。 Java是静态类型语言,是强类型语言

    3.2K110

    Python 实现识别图片验证码

    本文主要讲解识别图片验证码。 1 图片验证码强度 图片验证码主要采用加干扰线、字符粘连、字符扭曲方式来增强识别难度。...图片的处理,我采用 Python 标准图像处理库 PIL。图片分割,我暂时采用谷歌开源库 Tesseract-OCR。字符识别则使用 pytesseract 库。...3 安装 Pillow 我使用的 Python 版本是 3.6, 而标准库 PIL 不支持 3.x。所以需要使用 Pillow 来替代。Pillow 是专门兼容 3.x 版本的 PIL 的分支。...tesseract/wiki/4.0-with-LSTM#400-alpha-for-windows pytesseract pytesseract 是 Tesseract-OCR 对进行包装,提供 Python...if __name__ == '__main__': main() 运行结果如下: 未转化前的: RGB JPEG 识别的结果: 9834 5 总结 Tesseract-ORC 对于这种验证码识别率还是可以

    4.1K31

    什么是强类型、类型、动态类型、静态类型语言

    强类型语言 强制类型定义的语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就死该数据类型。 强类型语言包括:Java、.net、Python、C++等语言。...其中Python是动态语言,是强类型定义语言,是类型安全的语言,Java是静态语言,是强类型定义语言,也是类型安全的语言。 强类型接口设计 使用 feigh 设计强类型接口 ? ?...类型语言 类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动。类型语言包括:VB,PHP,JavaScript等语言。其中VBScript是动态语言,是一种类型不安全的原因。...强类型原因在速度上可能略逊于类型语言,但是强类型定义语带来的严谨性又避免了不必要的错误。 ?...Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言

    6.8K30

    Python「强类型」or「类型」?90% 的人说不清

    例如在 Python 中, f = 0.5 2.2 性能 静态类型(static): 编译阶段做更多处理,但是运行时(run-time)性能更好 动态(Dynamic): 编译阶段更高效,但是运行时的类型检查会影响到性能...2.3 灵活性和出错 静态类型: 运行时出错机会更小,但是提供给程序员的灵活性不好 动态类型: 提供更多的灵活性但是运行时出错机会相对更大 2.4 记住 各种语言按照动态/静态,类型/强类型的划分...例如在Python中: data = 5 # 在runtime时,被赋值为整形 data = data + "xiaoming" # error 然而,在类型中,它是很容易与其他类型混合计算的,比如同样一门伟大的语言...在静态类型语言中,类型检查发生在编译阶段;动态类型语言,类型检查发生在运行阶段。 强类型语言有更强的类型检查机制,表达式计算中会做严格的类型检查;而类型语言允许各种变量类型间做一些运算。...Python是一门动态的(dynamic)且强类型(strong)语言

    3.3K30

    编程语言傻傻分不清:类型、强类型、动态类型、静态类型

    例如:ECMAScript(JavaScript)、Ruby、Python、VBScript、php Python和Ruby就是典型动态类型语言,其他各种脚本语言如VBScript也多少属于动态类型语言...举例说明 Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是类型定义语言(类型不安全的语言); JAVA是静态语言,是强类型定义语言(类型安全的语言) ---...比如C语言的缓冲区溢出,属于trapped errors,即属于forbidden behaviors..故C是类型 前面的人也说了,类型语言,类型检查更不严格,如偏向于容忍隐式类型转换。...误区 大家觉得C语言要写int a, int b之类的,Python不用写(可以直接写a, b),所以C是静态,Python是动态。这么理解是不够准确的。...和Haskell 4.下面是些例子 无类型: 汇编 类型、静态类型 : C/C++ 类型、动态类型检查: Perl/PHP 强类型、静态类型检查 :Java/C# 强类型、动态类型检查 :Python

    8.3K31
    领券