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

干货 | 30个经典Python面试考问题详解(上)

列表是可变的,在创建之后可以对其进行任意的修改 元组是不可变的,元组一旦创建,便不能对其进行更改 列表表示的是顺序,它们是有序序列,通常是同一类型的对象,比如说都是字符串类型,又或者是都是数值类型 元素表示的是结构...用"=="去比较两变量,由于其中的“值"相同,因此返回的结果是true,而从上图中可以发现,变量"x"和变量"z"由于其"id"不同,所以用"is"来比较时返回的结果为False 03 什么是装饰器?...比如说我们来编写一个装饰器,该装饰器用来调用另一个函数时记录日志 ? 然后我们编写其他两个函数,并将装饰器添加到到其中, ? 得出的结果如下图所示, ?...、单纯的函数 类方法(class methods): 接受cls参数,并且可以修改类本身 我们将通过构建一个Person类来说明它们之间的区别 ?...,比如需要唯一键 07 append和extend有什么区别 在python中,append是将一个值添加到另一个列表中去,而extend则是将一个列表当中的值添加到另一个列表中去,如下图所示 ?

96331

c++_构造与析构

c++_构造与析构 构造函数 构造函数是一种特殊的函数 主要用来在创建对象时初始化对象, 即为对象的成员变量附初始值...., 由于系统不再提供默认构造, 定义类时将必须带参, 否则会报错 拷贝构造 拷贝构造是一种特殊的带参构造函数, 参数为同类型类对象, 用于同类型对象的初始化 基础用法: int main() {...b的值和a相同, 但也出现问题(a中的成员s和b中的成员s指向同一个地址, 如果a.s改变b.s也会随之改变) 自定义拷贝构造 类名 (const 类名& 引用名 ) { } 浅拷贝(默认拷贝构造就是一种看不见的系统自动调用的浅拷贝...将对象生命周期最后要做的事情写在析构函数中 构造函数: 函数名和类名相同, 函数名前加~ 没有返回值类型, 也没有参数列表 如果类中没有自己写析构, 系统自动提供一个什么都不干的隐式的析构 析构的调用时机...: 在对象死亡时自动调用(对象作用域结束, 动态内存被释放) 析构函数可以主动通过对象调用,析构函数必须是公有属性下 class MyStu { int id; char* name; public

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

    检查Python对象

    Python 具有一组丰富的对象类型:字符串、整数、浮点、列表、元组、字典、函数、类、类实例、模块、文件等。...当您有一个任意的对象(也许是一个作为参数传递给函数的对象)时,可能希望知道一些关于该对象的情况。在本节中,我们将向您展示如何让 Python 对象回答如下问题: 对象的名称是什么?...当以交互的方式运行 Python 时,局部 __name__ 变量被赋予值 '__main__' 。...值得注意的是,可能有多个变量引用同一对象,同样地,变量可以引用看起来相似(有相同的类型和值),但拥有截然不同标识的多个对象。...当更改对象时(如将某一项添加到列表),这种关于对象标识的概念尤其重要,如在下面的示例中, blist 和 clist 变量引用同一个列表对象。

    1.3K100

    C++中类和对象以及成员函数

    参考链接: 如何通过C++函数传递和返回对象? 一个实体拥有自己的属性和行为,属性是私有的,行为是共有的,在C++中实体对应的就是对象,实体抽象数据类型就是类,属性是成员变量,行为是成员函数。 ...C++的class和C语言的结构体的区别:  ①struct Node是一个类型,在C语言中这样定义struct Node a;定义了一个结构体类型的a变量;在C++中,结构体定义对象可以写成Node...空类的实例中不包含任何信息,本来求sizeof应该是0,但是当我们声明该类型的实例的时候,它必须在内存中占有一定的空间,否则无法使用这些实例。至于占多少内存,由编译器决定。VS中是1。 ...void GetName(char *name);//1      char *GetName();//2  函数1引进了一个附本,修改的附本,并不会影响成员变量原本的值;  函数2返回值是成员变量的指针...,析构时就会出现问题:  第三句代用拷贝构造函数,方式是浅拷贝。

    1.4K20

    你不可不知的Java引用类型之——Reference源码解析

    用作在操作pending链表时的同步对象。注意这是一个静态对象,意味着所有Reference对象共用同一个锁。...static private class Lock { } private static Lock lock = new Lock(); pending:等待添加到queue中的元素链表。.../* 用来保存那些需要被放入队列中的reference,收集器会把引用添加到这个列表里来, * Reference-handler线程会从中移除它们。 * 这个列表由上面的lock对象锁进行保护。...具体取决于实例是否在创建时注册到一个引用队列中。 在前一种情况下(将状态更改为Pending),他还会将实例添加到pending-Reference列表中。新创建的实例处于活动状态。...当reference处于pending状态时,表明已经准备将它放入引用队列中,在这个状态下要处理的对象将逐个放入queue中。在这个时间窗口期,相应的引用对象为pending状态。

    1.4K10

    4.《python自省指南》学习

    ,当我们以交互方式运行 Python 时,这个值是空字符串; >>> sys.path #path 变量是模块搜索路径,Python 在导入期间将在其中的目录列表中寻找模块...但每本书都只是原始模板的实例,并保留了原始模板的大多数特征。再比如说柏拉图的理想模型,可以说每种饼干都是来自于同一个模具。   对于面向对象的类和类实例也是如此。...时,就有了class 'main.A'>,a实例属于主模块下的A类的实例。...id表明变量所引用的对象,值得注意的是,可能有多个变量引用同一对象,同样地,变量可以引用看起来相似(有相同的类型和值),但拥有截然不同标识的多个对象。...当更改对象时(如将某一项添加到列表),这种关于对象标识的概念尤其重要,id() 函数给任何给定对象返回唯一的标识符。

    68620

    从基础入门到学穿C++(类和对象篇)【超详细】【一站式速通】

    类体中内容称为类的成员,类中定义的变量称为成员变量,类中定义的函数称为成员函数 类中的成员在进行命名时,一般要加上前缀修饰符或者后缀修饰符,以区别成员变量和函数形参,避免造成混淆。...类实例化的对象中只存储成员变量,不存储成员函数 一个类实例化出N个对象,每个对象的成员变量都可以存储不同的值,但是调用的函数却是同一个。...但是还是存在特殊情况,对于类中的成员变量存在指针的时候就会出现问题,比如我们用类来实现一个栈,如果我们没有自己实现拷贝构造,那么在进行拷贝构造时,会按字节进行拷贝,会有两个数组指针指向同一块空间,由于析构函数会在程序结束时自动调用...,建议都加上const const对象和非const对象都可以调用const修饰的函数 初始化列表 初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式...因为一共实例化出了两个对象。结果却是1 这是因为我们创建的不同对象在每次构造的时候,都是不同的count,为了保证我们所有的操作都作用于同一个变量上就需要使用static修饰,使其变成静态成员变量。

    9810

    深入理解java虚拟机-第二章:java内存区域与内存泄露异常

    2.1概述: java将内存的管理(主要是回收工作),交由jvm管理,确实很省事,但是一点jvm因内存出现问题,排查起来将会很困难,为了能够成为独当一面的大牛呢,自然要了解vm是怎么去使用内存的。...运行时常量池相对于Class文件的常量池另一个重要特征是动态性,运行期间也可以放入新的常量进入常量池。比较多的用法是String类的intern()。   ...空闲列表:如果内存不规整,那么已使用的内存与空闲内存交互,虚拟机会维护一个记录表,记录内存是否可用,在分配时从列表中找足够内存划分给实例,更新记录表。   ...两种对象的访问方式各有优劣,句柄的好处时,reference中存储的是稳定的句柄地址,对象被移动时,只改变句柄中的实例数据指针,而reference不改变。   ...对象包含的字符串添加到常量池中,返回此string对象的引用。

    49820

    Java笔试题大全(附带答案)「建议收藏」

    编译失败 附:static用来修饰全局变量,不能修饰局部变量 3. 下列哪种说法是正确的( D) A. 实例方法可直接调用超类的实例方法 B. 实例方法可直接调用超类的类方法 C....,则表明这个引用变量是指向这个对象的;一个对象可以有多个引用;一个引用同一时刻,则只能指向一个对象; 17....构造函数何时被调用( ) B A.类定义时 B.创建对象时 C.调用对象方法时 D.使用对象的变量时 34. break语句( ) D A、只中断最内层的循环 B、只中断最外层的循环...在类方法中可用this来调用本类的类方法 B. 在类方法中调用本类的类方法时可直接调用 C. 在类方法中只能调用本类中的类方法 D. 在类方法中绝对不能调用实例方法 11....哪两个方法能加到Y类的定义中?

    7.6K30

    流畅的 Python 第二版(GPT 重译)(三)

    ⁹ 面向对象编程的主要思想是将行为和数据放在同一个代码单元中:一个类。如果一个类被广泛使用但本身没有重要的行为,那么处理其实例的代码可能分散在整个系统的方法和函数中(甚至重复)—这是维护头痛的根源。...Python 变量就像 Java 中的引用变量;一个更好的比喻是,变量视为附加到对象的名称的标签。下一个示例和图将帮助您理解为什么。...② 将变量b绑定到与a引用相同的值。 ③ 通过向a引用的列表追加另一个项目来修改列表。 ④ 你可以通过变量b看到效果。...它将标签b附加到已经有标签a的对象上。 Stein 教授也非常谨慎地谈到了赋值。例如,在谈论模拟中的一个跷跷板对象时,她会说:“变量s被赋给了跷跷板”,但从不说“跷跷板被赋给了变量s”。...使用+=或*=进行增强赋值会在左侧变量绑定到不可变对象时创建新对象,但可能会就地修改可变对象。 将新值分配给现有变量不会更改先前绑定到它的对象。这被称为重新绑定:变量现在绑定到不同的对象。

    15700

    单例模式的迭代式优化过程

    在软件设计架构中,单例模式是最为常用的一种设计模式,所谓单例模式是指在创建某一个类的对象实例时该系统中有且仅有该类的一个实例,从而可以合理解决实例化对象的性能开销、资源分配等问题。...hbase的Connection对象,则如果实例的单例对象不使用就会造成资源的浪费 懒汉式单例 区别于饿汉式单例,它的思想是在需要使用单例对象时才创建,如果对象存在则直接返回,如果对象不存在则创建后返回...给对象分配堆内存空间; 调用对象的构造器方法,并执行初始化操作(即完成静态飞马逻辑); 将变量指向相应的内存地址(引用 类似是C++的指针) 假设单例对象已经被一个线程进入临界区创建成功,则此时instance...一般来说有两种破坏单例模式的方法较为常见,一是网络序列化攻击,二是反射攻击 序列化攻击 序列化攻击是指将实例出来的对象序列化写入文件流,然后再反序列化获取对象,则这两次的对象不一致(hashcode不一样...MyClass(): pass # 还有一种,但不算是单例模式,但思想可以借鉴一下 # 采用__dict__共享变量的方式 # 创建实例时把所有实例的__dict__指向同一个字典,这样它们具有相同的属性和方法

    31110

    苏州同程旅游学长给我的全面的面试知识库

    公开声明的变量或方法可在应用程序中的任何位置访问。静态声明的变量或方法可以全局访问,而无需创建类的实例。默认情况下,静态成员不可全局访问,这取决于所使用的修改的访问类型。...一个对象是一个类的实例,通过它我们可以访问该类的方法。“新建”关键字用于创建对象。在内存中创建对象的类将包含有关该类的方法,变量和行为的信息。...自定义控件是作为编译代码(Dll)生成的控件,它们更易于使用,可以添加到工具箱中。开发人员可以将控件拖放到他们的Web表单中。在设计时属性即可。...密封的修饰符,用于防止从类派生。如果我们强制将密封类指定为基类,则会发生编译时错误。 18、什么是方法重载? 方法重载是在同一个类中创建多个具有相同名称且具有唯一签名的方法。...工具取决于您自己,因为方法位于您自己的类中。当来自不同接口的方法期望不同的数据时可能会出现问题,但就编译器而言,您可以。 关注苏州程序大白,持续更新技术分享。谢谢大家支持

    3K20

    java学习笔记(基础篇)—面向对象编程之封装、继承、多态

    OOP中的基本概念 Java的编程语言是面向对象的,采用这种语言进行编程称为面向对象编程(Object-Oriented Programming, OOP), 它允许设计者将面向对象设计实现为一个可运行的系统...,采用地址传递 3. this关键字: 当前对象 ​ 1)区分实例变量和局部变量 ​ this.name=name; ​ 2)调用本类的构造器 ​ this(参数列表); ​ 3)调用本类的方法...当构造一个子类的实例对象时,该对象的实例变量包括了子类本身以及父类中的所有实例变量,实例方法也包括了子类和父类中的所有实例方法。...子类构造器用来初始化子类中所有的实例变量,而父类构造器super(实参)用来初始化父类中所有的实例变量。那么在堆中为子类实例对象分配的内存区域中包括了子类和父类中所有初始化后的实例变量。...静态数据类型:变量申明时候的类型,编译时 动态数据类型:创建对象时的数据类型,运行时 对象真正的数据类型是动态数据类型决定的,运行时数据类型 实现多态必须满足什么条件: 1)子类必须重写父类中的方法

    87330

    送给小白的 7 个 python 小坑

    ,对作用域中的变量进行赋值时,Python会自动将该变量视为该作用域的本地变量,并在外部作用域中隐藏任何类似命名的变量。...、 解决办法是将临时值也保存在匿名函数的作用域内,在声明匿名函数时就查询变量的值。 了解原理之后,让我们来改一改代码,surprise!...滥用__init__ __init__方法在Python中用作构造函数,当Python将内存分配给新的类对象时,它会自动被调用。...__init__(a, hello ) 即__init__作用是初始化已实例化后的对象。 其次,子类可以不重写__init__,实例化子类时,会自动调用超类中已定义的__init__。...hello ) print (b.getName()) 但如果重写了__init__,实例化子类时,则不会隐式的再去调用超类中已定义的__init__。

    64220

    Python3 面向对象编程进阶

    在 OOP 编程中对象是 OOP 程序的基本单元,一个对象包含了数据和操作数据的函数,在 Python 中,所有数据类型都可以视为对象,也可以自定义对象,自定义的对象数据类型就是面向对象中的类( Class...面向对象的设计思想来源于现实世界,因为现实界中,类( Class)和实例( Instance)的概念是很自然的。 ...和静态语言 C++ 不同, Python 允许对实例变量绑定任何数据,也就是说,对于两个实例变量,虽然它们都是同一个类的不同实例,但拥有的变量名称都可能不同。...当你使用 super(cls, inst) 时,Python 会在 inst 的 MRO 列表上搜索 cls 的下一个类。...,因为相同名称的实例属性将屏蔽掉类属性,但是当你删除实例属性后,再使用相同的名称,访问到的将是类属性。

    43110

    3.Writing Larger Programs

    3.指针 C ++指针只是一个变量,用于存储程序中对象的内存地址。...可能想知道为什么同一个符号既可以用来访问内存地址,也可以像以前看到的那样,将引用传递到函数中: 1.符号&和*有不同的含义,这取决于它们出现在等式的哪一边。 2.记住这一点非常重要。...但是,如果在创建第一个对象时另一个对象尚不可用,则第一个对象将需要使用指针,而不是引用,因为引用不能为空,只能在创建另一个对象后初始化引用。 5....添加一个构造函数 解决这个问题的最好方法是向Car类添加构造函数。构造函数允许您使用所需的数据实例化新对象。在下一个代码单元中,我们为Car添加了一个构造函数,它允许传入数字和颜色。...正如我们之前讨论的头文件一样,将类定义放在单独的头中有助于组织代码,并防止在定义类之前尝试使用类对象出现问题。

    47220

    iOS开发-Runtime详解

    值得注意的时,objc_class 中也有一个 isa 指针,这说明 Objc 类本身也是一个对象。...,每当实例对象接收到一个消息时,它不会直接在 isa 指针指向的类的方法列表中遍历查找能够响应的方法,因为每次都要查找效率太低了,而是优先在 Cache 中查找。...它们时在代码被编译时被插入方法实现中的。尽管这些参数没有被明确声明,在源代码中我们仍然可以引用它们。 这两个参数中, self更实用。它是在方法实现中访问消息接收者对象的实例变量的途径。...forwardInvocation: 方法就是一个不能识别消息的分发中心,将这些不能识别的消息转发给不同的接收对象,或者转发给同一个对象,再或者将消息翻译成另外的消息,亦或者简单的“吃掉”某些消息,因此没有响应也不会报错...当一个类被编译时,实例变量的内存布局就形成了,它表明访问类的实例变量的位置。实例变量一次根据自己所占空间而产生位移: ? 上图左是 NSObject 类的实例变量布局。右边是我们写的类的布局。

    73690

    iOS开发-Runtime详解

    值得注意的时,objc_class 中也有一个 isa 指针,这说明 Objc 类本身也是一个对象。...,每当实例对象接收到一个消息时,它不会直接在 isa 指针指向的类的方法列表中遍历查找能够响应的方法,因为每次都要查找效率太低了,而是优先在 Cache 中查找。...它们时在代码被编译时被插入方法实现中的。尽管这些参数没有被明确声明,在源代码中我们仍然可以引用它们。 这两个参数中, self更实用。它是在方法实现中访问消息接收者对象的实例变量的途径。...forwardInvocation: 方法就是一个不能识别消息的分发中心,将这些不能识别的消息转发给不同的接收对象,或者转发给同一个对象,再或者将消息翻译成另外的消息,亦或者简单的“吃掉”某些消息,因此没有响应也不会报错...当一个类被编译时,实例变量的内存布局就形成了,它表明访问类的实例变量的位置。实例变量一次根据自己所占空间而产生位移: ? 上图左是 NSObject 类的实例变量布局。右边是我们写的类的布局。

    73470

    【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解

    2.2.1 类类型之间的隐式转换 在下面的例子中,B类通过构造函数接受一个A类对象,这样当我们将A类对象赋值给B类时,C++会自动进行隐式转换。...静态成员变量存储在静态存储区,而不是对象中。构造函数的初始化列表是为每个对象实例服务的,因此静态成员变量不能通过初始化列表进行初始化。...由于静态成员变量的共享性,它们只在整个程序中存在一份,因此必须在类外进行初始化,以确保所有对象访问的都是同一份数据。...(1)题目代码 class Sum { public: Sum() { _ret += _i; // 每次调用构造函数时,将当前 i 的值加到 _ret 中 +...Sum::GetRet(); // 返回累加的结果 } }; (2)解析 每次创建 Sum 对象时,都会调用其构造函数,而构造函数会将 _i 的值累加到 _ret 中。

    35510
    领券