2.当进行修改操作时,可变类型传递的是内存中的地址,也就是说,直接修改内存中的值,并没有开辟新的内存。
3.不可变类型被改变时,并没有改变原内存地址中的值,而是开辟一块新的内存,将原地址中的值复制过去,对这块新开辟的内存中的值进行操作。
6、Python 中类方法、类实例方法、静态方法有何区别?
类方法: 是类对象的方法,在定义时需要在上方使用 @classmethod 进行装饰,形参为cls,表示类对象,类对象和实例对象都可调用
类实例方法: 是类实例化对象的方法,只能由实例对象调用,形参为self,指代对象本身;
静态方法: 是一个任意函数,在其上方使用 @staticmethod 进行装饰,实例对象和类对象都可以调用。但是方法体中不能使用类或实例的任何属性和方法。
7、请阐述同步,异步,阻塞,非阻塞的概念?
同步: 多个任务之间有先后顺序执行,一个执行完下个才能执行。
异步: 多个任务之间没有先后顺序,可以同时执行,有时候一个任务可能要在必要的时候获取另一个同时执行的任务的结果,这个就叫回调!
阻塞: 如果卡住了调用者,调用者不能继续往下执行,就是说调用者阻塞了。
非阻塞: 如果不会卡住,可以继续执行,就是说非阻塞的。
同步异步相对于多任务而言,阻塞非阻塞相对于代码执行而言。
8、Python代码中_args, *_kwargs 含义及用法?
args: arguments 的缩写,表示位置参数
kwargs: keyword arguments 的缩写,表示关键字参数
9、Python赋值、浅拷贝和深拷贝的区别?
Python 有 3 种赋值方式:直接赋值、浅拷贝、深拷贝;
直接赋值:就是对象的引用。(相当于给原来的对象起个别名),比如有个人叫张三,外号叫小张,对象的引用就是类似,虽然换个名字,但是两个名字指的是同一个人。
浅拷贝,拷贝的是父对象,不会拷贝到内部的子对象。(单从浅字就可以看出拷贝的东西不深,可以理解为只拷贝一层) { 1、完全切片方法;2、工厂函数,如 list();3、copy 模块的 copy()函数 }
深拷贝,包含对象里面的自对象的拷贝(可以理解为克隆,全拷贝过去但是两者没有任何关系了,各自是各自的);所以原始对象的改变不会造成深拷贝里任何子元素的改变 { copy 模块的 deep.deepcopy()函数 }
10、合并两个列表并去除重复元素?
list1 = ['b','c','c','a','f','r','y','e','e']
list2 = ['t','y','x','y','z','e','f']
def merge\_list(\*args):
s = set()
for i in args:
s = s.union(i)
print(s)
return s
merge_list(list1,list2)
11、如何查询和替换一个文本中的字符串?
tempstr = "hello python,you,me,world"
print(tempstr.replace("hello","python"))
#还可以使用正则,有个sub()
tempstr = "hello python,you,me,world"
import re
rex = r'(hello|Use)'
print(re.sub(rex,"HELLO",tempstr))
12、Python中的列表和元组有什么区别?
list 是可变的对象,元组 tuple 是不可变的对象。也就是说列表中的元素可以进行任意修改,而元组中的元素无法修改。
12、Python数组和列表有什么区别?
Python中的数组和列表具有相同的存储数据方式。但是,数组只能包含单个数据类型元素,而列表可以包含任何数据类型元素。
13、Python中append和extend的区别?
append() 向列表尾部追加一个新元素,列表只占一个索引位,在原有列表上增加
extend() 向列表尾部追加一个列表,将列表中的每个元素都追加进来,在原有列表上增加
14、Python中==和is的区别
is用于判断两个变量引用对象是否为同一个,==用于判断引用变量的值是否相等。
15、区分下break,continue和pass?
break:跳出循环,不执行下一个循环。同时break后面的代码也不会执行。
pass:pass后面的代码还是会继续执行,也就是当前的循环还在继续。
continue:continue后面的代码不会执行,而是直接进入下一个循环。
16、Python中的局部变量和全局变量是什么?
全局变量:在函数外或全局空间中声明的变量称为全局变量。这些变量可以由程序中的任何函数访问。
局部变量:在函数内声明的任何变量都称为局部变量。此变量存在于局部空间中,而不是全局空间中。
17、python中range&xrange有什么区别?
在大多数情况下,xrange和range在功能方面完全相同。
它们都提供了一种生成整数列表的方法,唯一的区别是range返回一个Python列表对象,x range返回一个xrange对象。这就表示xrange实际上在运行时并不是生成静态列表。
它使用称为yielding的特殊技术根据需要创建值。该技术与一种称为生成器的对象一起使用。因此如果你有一个非常巨大的列表,那么就要考虑xrange。
18、python装饰器是什么?
装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。
它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。
19、说一下python迭代器和生成器?
介绍python生成器需要先介绍可迭代对象和迭代器。
可迭代对象(Iterable Object),简单的来理解就是可以使用 for 来循环遍历的对象。比如常见的 list、set和dict。
可迭代对象具有__iter__ 方法,用于返回一个迭代器,或者定义了 getitem 方法,可以按 index 索引的对象(并且能够在没有值时抛出一个 IndexError 异常),因此,可迭代对象就是能够通过它得到一个迭代器的对象。所以,可迭代对象都可以通过调用内建的 iter() 方法返回一个迭代器。
生成器其实是一种特殊的迭代器,不过这种迭代器更加优雅。它不需要再像上面的类一样写__iter__()和__next__()方法了,只需要一个yiled关键字。
20、函数__new__和__init__的区别是什么?
实际开发中__new__函数很少用到,关于__new__函数,你需要知道:
new__是静态函数,而__init__是一个实例函数.
new__函数会返回一个创建的实例,而__init__什么都不返回.
只有在__new__返回一个cls的实例时后面的__init__才能被调用.
当创建一个新实例时调用__new,初始化一个实例时用__init.
另外,metaclass__是创建类时起作用.所以我们可以分别使用__metaclass、__new__和__init__分别在类创建、实例创建和实例初始化的时候实现一些定制的特殊操作.
21、Python的主要功能是什么?
Python是一种解释型语言。与C语言等语言不同,Python不需要在运行之前进行编译。
Python是动态语言,当您声明变量或类似变量时,您不需要声明变量的类型。
Python适合面向对象的编程,因为它允许类的定义以及组合和继承。Python没有访问说明(如C ++的public,private)。
在Python中,函数是第一类对象。它们可以分配给变量。类也是第一类对象
编写Python代码很快,但运行比较慢。Python允许基于C的扩展,例如numpy函数库。
Python可用于许多领域。Web应用程序开发,自动化,数学建模,大数据应用程序等等。它也经常被用作“胶水”代码。
22、如何在Python中管理内存?
python中的内存管理由Python私有堆空间管理。所有Python对象和数据结构都位于私有堆中。程序员无权访问此私有堆。python解释器负责处理这个问题。
Python对象的堆空间分配由Python的内存管理器完成。核心API提供了一些程序员编写代码的工具。
Python还有一个内置的垃圾收集器,它可以回收所有未使用的内存,并使其可用于堆空间。
23、什么是python模块?Python中有哪些常用的内置模块?
Python模块是包含Python代码的.py文件。此代码可以是函数类或变量。一些常用的内置模块包括:sys、math、random、data time、JSON。
24、python是否区分大小写?
是。Python是一种区分大小写的语言。
25、什么是Python中的类型转换?
如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费学习大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。
四、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!