1.Python语言的特性

Python是一门解释型语言, 简单清晰,开源免费,跨平台,有大量第三方库辅助开发,支持面向对象与自动垃圾回收,方便与其他编程语言相互调用。

Python在数据采集、人工智能、WEB后台开发、自动化运维、测试等方向应用广泛。

2.python原生(基本数据类型有哪些?

整型 int

浮点数 float

字符串 str

布尔 bool

列表 list:有序,可遍历,[ ]

元组 tuple:有序,可遍历,不可更新,( )

集合 set :无序,不重复元素,不可遍历,可更新,{ }

字典 dict:特殊的集合,以键值对形式,{'key':'value}

3.哪些是是可变类型哪些是不可变类型

不可变类型:整型,浮点型,字符串,布尔值,元组

可变类型:列表,集合,字典

4.不可变类型和可变类型的差别

可变类型引用的是同一个值,可以对内容进行修改

不可变类型类型,在赋值或者值传递时候会复制新一个对象,与原始对象内存不一致

5.说说常用的数据结构有哪些?各自的特点

线性结构:

列表,元组,按照索引进行访问,访问速度快,插入和删除不易

栈:后进先出

队列:先进先出

非线性结构:

集合:元素不重复,多用于去除重复

字典:键值对格式存储,查询效率高,增加内存空间

6.什么是面向对象?谈谈详细认知

面向对象编程(OOB)是利用'类'和'实例'来实现对世界的描述,一切皆对象,通过实例与实例的交互来编程

优点:

1.使程序更容易拓展和修改,使得开发效率更高

2.基于面向对现象编程可以使得他人更容易理解代码逻辑

三大特性:封装,继承,多态

封装:将数据与数据的操作封装到一个类

继承:子类继承父类获得父类的功能实现

多态:通过重载(父类)和重写(同一个类内)实现方法的多样性

一个类通常由,实例方法,实例属性,类方法,类属性,静态方法构成

访问权限:

公开:类内及类外

_保护:类内及子类,(实际上仅起到声明作用,无语法上限制

_ _私有:仅限类内可以访问

7.什么是鸭子类型?

鸭子类型:不关注类型,只关注是否有对应的行为方法。叫起来像鸭子,走起来像鸭子就认为是一只鸭子。

在编程领域,这意味着我们不关心对象的具体类型是什么,而是更关注对象是否具有我们需要的方法或属性。换句话说,只要一个对象能够响应特定的消息或调用特定的方法,那么这个对象就可以被接受,无论它的具体类型是什么。

8.说一说你常用的魔法方法?

_ _new_ _:创建实例并返回,在init之前

_ _init_ _:初始化实例属性

_ _str_ _:字符串显示

_ _repr_ _:官方显示,原有的样式

_ _edl_ _:对象不被调用自动销毁

运算符重载  可以用于实例的比较

'__eq__', ==

'__ge__', >=

'__gt__', >

'__le__', <=

'__lt__', <

'__ne__', !=

信息获取:

'__class__', 获取类型

'__dir__', 获取自省信息

'__doc__', 获取类及类中方法的注释

'__sizeof__', 获取对象字节长度

9.谈一谈你对python动态性的理解?是否知道猴子补丁?

动态性指的是在运行过程中给类或对象绑定添加属性

实例属性,类属性,静态方法直接添加   

实例方法,类方法需要通过types.MethodType 添加

"猴子补丁"是一种动态修改或扩展代码运行时行为的技术。它允许开发者在程序运行过程中更改类或模块的功能,而不需要修改原始源代码。这种做法通常用于测试、调试或是对第三方库进行定制化修改等场景。

10.谈一谈python的异常处理方式?

Python 使用 tryexceptelsefinally 关键字来定义异常处理块。

try:尝试执行可能引发异常的代码。

except:捕获并处理特定类型的异常。

else:如果 try 块中没有发生异常,则执行 else 块中的代码。

finally:无论是否发生异常,都会执行 finally 块中的代码,通常用于清理操作(如关闭文件)。

Raise : 手动抛出异常

11简单说一下如何实现序列化?有什么不同?

一种用pickle进行二进制序列化, 一种用json进行文本特定格式序列化

pickle依赖python环境 只能在Python语言使用

json不依赖python环境 跨平台,跨语言

12谈谈深浅拷贝

不可变类型拷贝都是创建一个新的地址

可变类型:

等号赋值:直接使用原始地址,修改一个另外一个直接变化

使用列表,字典自带的copy方法:浅拷贝,可变类型拷贝地址,不可变拷贝值

使用copy模块的deepcopy方法:深拷贝,任何类型都是拷贝所有值

13谈谈对闭包的理解?

闭包语法:

函数套函数,

外部函数将内部函数返回,

内部函数引用外部函数的局部变量(nonlocal)

效果:可以实现外部函数局部变量的私有化和持久化

缺点:返回的内部函数保存着外部函数局部变量,没有释放资源,容易导致内存泄漏

14谈谈对装饰器的理解?

装饰器是 Python 中一种非常强大的功能,它允许程序员在不修改原始函数代码的情况下,动态地添加功能或修改现有函数的行为。装饰器本质上是一个接受函数作为参数的函数,并返回一个新的函数。这种设计模式使得代码更加模块化、可重用且易于维护。

装饰器通常利用闭包来实现其功能,因为它们可以访问定义时所在作用域内的变量。

15可迭代、迭代器、生成器的区别?

可迭代是指对象可以被循环迭代(可以使用for与while),内部实现了__iter__ 返回迭代器

迭代器在可迭代的基础上追加了next功能, 内部实现了__next__

生成器:为了节省内存使用时逐个访问生成每一个元素,本质是算法

16正则表达式

是一种强大的文本匹配工具,用于在字符串中查找特定模式。它们广泛应用于各种编程语言和文本编辑器中,用于搜索、替换、验证等操作。Python 中的 re 模块提供了对正则表达式的全面支持。

17Python的内存管理(垃圾回收)

从三个方面来说,

一是对象的引用计数机制,二时垃圾循环回收,三内存池机制

对象的引用计数机制

Python内部使用引用计数,来保持追踪内存中的对象使用次数。

引用计数增加的情况:

   一个对象分配一个新名称

   将其放入一个容器中(如列表、元组或字典)

   在函数中使用(函数未结束) 

引用计数减少的情况:

   使用del语句对对象别名显示的销毁

   变量被重新赋值

   函数执行结束

循环回收

   当一个对象的引用计数归零时,它将被垃圾收集机制处理掉。

   当两个对象a和b相互引用时,del语句可以减少a和b的引用计数,、由于每个对象都包含一个对     其他对象的应用,因此引用计数不会归零,对象也不会销毁。(从而导致内存泄露)。为解决这     一问题,解释器会定期执行一个循环检测器,搜索不可访问对象的循环并删除它们。

内存池机制 Python提供了对内存的垃圾收集机制,但是它将暂时不用的内存放到内存池而不是返回给操作系统。

18ascii、unicode、utf-8、gbk 区别

ASCII只包含一些基本的英文单词和一些特殊字符

Unicode是一个字符集,包含1全球范围内的字符

utf-8是一种Unicode编码方式,可变长度,兼容ASCII,广泛应用与互联网

gbk是一种双字节编码方式支持中文和其他东亚语言字符

19*arg和**kwarg作用

*args代表位置参数,它会接收任意多个参数并把这些参数作为元组传递给函数。

**kwargs代表的关键字参数,允许你使用没有事先定义的参数名。

位置参数一定要放在关键字参数的前面。

20is和==的区别

==是python标准操作符中的比较操作符,

用来比较判断两个对象( 值与类型)是否相等

is也被叫做同一性运算符,判断id是否相同。

21元类(MetaClass)

元类(metaclass)是用来创建类的类,通过定义元类,我们可以定制类的创建过程

类用来创建实例,元类用来创建类

type(类名, 父类元组,属性字典)

通过实现type的子类,并将子类赋予类的metaclass 参数来指定使用哪个原来创建类

33对比进程与线程

线程与进程:都是用于提升程序效率的技术
线程:共享的是进程的数据,多个线程之间默认就可以共享数据
   一个IO密集型(读写,网络请求)优先使用多线程
   对于Python来说,多线程并不是完全并行(全局的GIL锁)
进程:直接使用操作系统资源( 一般都是等于CPU核心数)
   一个运算密集型(充分利用每一个CPU)优先使用多进程

进程之间共享数据可以使用进程模块的Queue
池子:优化技术,预先创建一定数量的线程或者进程放入池子,使用时从池子中取
   使用完以后从新放入池子,避免反复的创建与销毁

23网络编程常见通信协议

  1. HTTP:超文本传输协议, 是用于在 Web 浏览器和 Web 服务器之间传输数据的协议,它基于 TCP 协议
  2. HTTPS:安全超文本传输协议,HTTPS 在 HTTP 的基础上加入了 SSL/TLS 加密,用于保护数据在客户端和服务器之间的传输安全
  3. TCP:传输控制协议,是一种面向连接的、可靠的协议,它在通信双方之间建立可靠的连接,并提供数据传输的保证
  4. UDP:用户数据报协议,是一种无连接的、不可靠的协议,它不保证数据传输的可靠性和顺序性,但具有低延迟的特点
  5. FTP:文件传输协议,用于在客户端和服务器之间传输文件,支持文件的上传和下载操作
  6. SMTP:简单邮件传输协议,用于发送电子邮件
  7. POP3,IMAP:用于接收电子邮件

作者:fw9521

物联沃分享整理
物联沃-IOTWORD物联网 » Python第一阶段基础题

发表回复