首页 > 编程语言 >Python面试

Python面试

时间:2022-10-10 16:00:40浏览次数:80  
标签:__ name Python 作用域 面试 init 对象 变量

1. Python是什么

2. 赋值、浅拷贝和深拷贝的区别https://www.cnblogs.com/kb-python/p/15998681.html

1. 赋值:就是简单对象的引用,并不会开辟新的内存空间,如下图,当a改变时,b的值也会跟随改变

a = 1
b = a
id(a) == id(b) # True

2. 浅拷贝:会创建新的对象,其内容非原对象本身的引用,而是原对象内第一层对象的引用,当原对象中的可变对象改变时,拷贝对象也会跟着改变

3. 深拷贝:从堆内存中开辟一个新的区域,对对象中的子对象进行递归拷贝,拷贝前后的两个对象互不影响

3. init和new的区别

1. new是一个静态方法,而init是一个实例方法

2. new方法会返回一个创建的实例,而init什么都不返回

3. 只有在new返回一个cls实例时后面的init才被调用

4. 当创建一个新实例时调用new,初始化实例调用init

4.Python的变量,对象和引用

1. 变量:变量就是指针,存放对象的引用,变量分为可变变量和不可变变量

2. 对象:对象就是分配的一块内存+存储的值,对象有地址(ID),类型(TYPE),值(VALUE)

3. 引用:引用是建立了变量和对象之间的关系,即某个变量指向了某个对象,二者之间的关系便是引用

image

5. Python的作用域

1. 局部作用域L:即函数中定义的变量

2. 嵌套的父级函数的局部作用域E:即包含此函数的上级函数的局部作用域,但不是全局

3. 全局变量G:模块级别定义的变量

4. 系统固定模块的变量B:比如int,byte等,搜索变量的优先顺序是:局部作用域>外层作用域>当前模块的全局变量>Python内置作用域,也就是LEGB

6. 创建百万级实例如何节省内存

方法:定义类的__slot__属性,用它来声明实例属性的列表,用来减少内存空间

class User1:
    def __init__(self, name):
        self.name = name


class User2:
    __slots__ = ["name", "id"]

    def __init__(self, id, name):
        self.name = name
        self.id = id

if __name__ == '__main__':
    u1 = User1("jack")
    u2 = User2("tom", 10)

查看下u1和u2属性差别

set(dir(u1)) - set(dir(u2))
# 输出: {'__weakref__', '__dict__'}

因为__dict__这个属性本身占用内存,且是动态绑定,所以当实例过多时,内存占用也多

标签:__,name,Python,作用域,面试,init,对象,变量
From: https://www.cnblogs.com/kb-python/p/16776035.html

相关文章

  • python 函数的多个返回值,多种传参方式
    1.函数的多个返回值deftest_return():return1,2按照返回时顺序,写对应顺序的多个变量接手即可变量之间用逗号隔开支持不同类型的数据return2.函数的多种传参......
  • python练习题-数据类型-列表拼接,按指定字符串查找,首尾去空(三)
    1.问题描述。把下图中列表,元组,字典中的值,组成一个列表。并查找列表中元素,移除每个元素的空格,并查找以a或者A开头并且以c结尾的所有元素。li=["alec","aric","Alex","T......
  • 10.5面试题
    请你说说ArrayList和LinkedList的区别ArrayList底层是数组实现的,数组是一组连续的内存单元,读取快(使用索引),插入删除慢(需要重新计算大小或是更新索引)LinkedList底层基于......
  • python编程从入门到实践--第3章 列表简介
    一。列表及使用    列表相当于其它语言的数组,使用下标法引用,特殊之处可以用负数的下标引用尾部元素,-1最后一个元素,-2倒数第二个元素,依此类推。     bicy......
  • Python 快速入门
    学习Python的由来第一次接触Python时,是在刚毕业不久,那时公司在做一个网盘客户端,需要调研一些GUI框架。由于当时Python很火(当然,现在也一样),便尝试了一下PyQt(Python......
  • Zen of Python(Python之禅)
    Python之禅同样也适合MatlabZenofPython(Python之禅)Beautifulisbetterthanugly.(优美比丑陋好)Explicitisbetterthanimplicit.(清晰比晦涩好)Simpleisbet......
  • Python中的装饰器
     0前言千言万语抵不过一句话:“Matlab中可以使用Python.”今天修改代码过程中遇到装饰器语法,顺便总结一下以方便以后查看,也分享给大家,希望有帮助吧。装饰器(Decorato......
  • [MicroPython ESP32] 内存分析
    [MicroPythonESP32]内存分析[(1)芯片:ESP32-WROOM-DA]手册:https://www.espressif.com.cn/zh-hans/support/documents/technical-documents?keys=&field_type_tid%5B%5D......
  • 怎么安装python?
    1.先在命令行输入python查看是否已经安装。2.开始下载python,然后安装  3.安装完成之后在命令行输入python看是否安装成功了,输入wherepython能查看安装在哪个路径,也......
  • python重拾第七天-面向对象进阶
    本节内容:面向对象高级语法部分经典类vs新式类静态方法、类方法、属性方法类的特殊方法反射异常处理Socket开发基础作业:开发一个支持多用户在线的FTP程序......