Python知识点之python基础
1.为什么学习Python
Python这门语⾔,⼊门⽐较简单,它简单易学,⽣态圈⽐较强⼤,涉及的地⽅⽐较多,特别是在⼈⼯智能,和数据分析这⽅⾯。在未来我觉得是往⾃动化,⼈⼯智能这⽅⾯发展的,所以学习了Python。
2.Python和其他语⾔的区别
从三个⽅⾯看Python
语⾔特点
简洁 优雅 省略了各种⼤括号和分号,还有⼀些关键字,类型说明
语⾔类型
手机下拉菜单拉不下来
解释型语⾔,运⾏的时候是⼀⾏⼀⾏的解释,并运⾏,所以调试代码很⽅便,开发效率⾼.
成员函数的特征第三⽅库
python是开源的,并且python的定位时任由其发展,应⽤领域很多,⽐如Web,运维,⾃动化测试,爬⾍,数据分析,⼈⼯智能.Python具有⾮常完备的第三⽅库
3.Python的优势
1. 简单:Python奉⾏简洁主义,易于读写,它使你能够专注于解决问题⽽不是去搞明⽩语⾔本⾝。
2. 免费:Python是开源软件。这意味着你不⽤花⼀分钱便能复制、阅读、改动它,这也是Python越来越优秀的原因——它是由⼀希望看到⼀个更加优秀的Python的⼈创造并经常改进着的。
3. 兼容性:Python兼容众多平台,所以开发者不会遇到使⽤其他语⾔时常会遇到的困扰。
4. ⾯向对象:Python既⽀持⾯向过程,也⽀持⾯向对象编程。在⾯向过程编程中,程序员复⽤代码,在⾯向对象编程中,使⽤基于数据和函数的对象。
5. 丰富的库:Python标准库确实很庞⼤。它可以帮助你处理各种⼯作,包括正则表达式、⽂档⽣成、单元测试、线程、数据库、⽹页浏
览器、CGI、FTP、电⼦邮件、XML、XML-RPC、HTML、WAV⽂件、密码系统、GUI(图形⽤户界⾯)、Tk和其他与系统有关的操作。
6. 规范的代码:Python采⽤强制缩进的⽅式使得代码具有极佳的可读性。
7. 可扩展性和可嵌⼊性。如果你需要你的⼀段关键代码运⾏得更快或者希望某些算法不公开,你可以把你的部分程序⽤C或C++编写,然后在你的Python程序中使⽤它们。你可以把Python嵌⼊你的C/C++程序,从⽽向你的程序⽤户提供脚本功能。
4.Python的解释器种类?
Python解释器主要有以下⼏个:
1、CPython
官⽅版本的解释器:CPython。这个解释器是⽤C语⾔开发的,所以叫CPython。在命令⾏下运⾏python就是启动CPython解释器。CPython是使⽤最⼴且被的Python解释器。
2、IPython
IPython是基于CPython之上的⼀个交互式解释器,也就是说,IPython只是在交互⽅式上有所增强,但是执⾏Python代码的功能和CPython是完全⼀样的。CPython⽤>>>作为提⽰符,⽽IPython⽤In [序号]:作为提⽰符。
3、PyPy
PyPy是另⼀个Python解释器,它的⽬标是执⾏速度。PyPy采⽤JIT技术,对Python代码进⾏动态编译(注意不是解释),所以可以显著提⾼Python代码的执⾏速度。绝⼤部分Python代码都可以在PyPy下运⾏,但是PyPy和CPython有⼀些是不同的,这就导致相同的Python代码在两种解释器下执⾏可能会有不同的结果。如果你的代码要放到PyPy下执⾏,就需要了解PyPy和CPython的不同点。~
4、Jython
Jython是运⾏在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执⾏
5、IronPython
IronPython和Jython类似,只不过IronPython是运⾏在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。在这些Python解释器中,使⽤⼴泛的是CPython 。
5.python2和python3区别
⼀、核⼼类差异
1. Python3 对 Unicode 字符的原⽣⽀持。
Python2 中使⽤ ASCII 码作为默认编码⽅式导致 string 有两种类型 str 和 unicode,Python3 只⽀持 unicode 的 string。Python2 和Python3 字节和字符对应关系为:
2. Python3 采⽤的是绝对路径的⽅式进⾏ import
Python2 中相对路径的 import 会导致标准库导⼊变得困难(想象⼀下,同⼀⽬录下有file.py,如何同时导⼊这个⽂件和标准库 file)。Python3 中这⼀点将被修改,如果还需要导⼊同⼀⽬录的⽂件必须使⽤绝对路径,否则只能使⽤相关导⼊的⽅式来进⾏导⼊。
3. Python2 中存在⽼式类和新式类的区别,Python3 统⼀采⽤新式类。新式类声明要求继承 object,必须⽤新式类应⽤多重继承。
4. Python3 使⽤更加严格的缩进。Python2 的缩进机制中,1 个 tab 和 8 个 space 是等价的,所以在缩进中可以同时允许 tab 和space 在代码中共存。这种等价机制会导致部分 IDE 使⽤存在问题。~
·Python3 中 1 个 tab 只能另外⼀个 tab 替代,因此 tab 和 space 共存会导致报错:
TabError:inconsistent use of tabs and spaces in indentation.
⼆、废弃类差异
1. print 语句被 Python3 废弃,统⼀使⽤ print 函数
2. exec 语句被 python3 废弃,统⼀使⽤ exec 函数
3. execfile 语句被 Python3 废弃,推荐使⽤ exec(open("./filename").read())
4. 不相等操作符"<>“被 Python3 废弃,统⼀使⽤”!="
5. long 整数类型被 Python3 废弃,统⼀使⽤ int
6. xrange 函数被 Python3 废弃,统⼀使⽤ range,Python3 中 range 的机制也进⾏修改并提⾼了⼤数据集⽣成效率
7. Python3 中这些⽅法再不再返回 list 对象:dictionary 关联的 keys()、values()、items(),zip(),map(),filter(),但是可以通过
list 强⾏转换:
mouse1是哪个键8. mydict={“a”:1,“b”:2,“c”:3}
9. mydict.keys() #<built-in method keys of dict object at 0x000000000040B4C8>
10. list(mydict.keys()) #[‘a’, ‘c’, ‘b’]
11. 迭代器 iterator 的 next()函数被 Python3 废弃,统⼀使⽤ next(iterator)
12. raw_input 函数被 Python3 废弃,统⼀使⽤ input 函数
13. 字典变量的 has_key 函数被 Python 废弃,统⼀使⽤ in 关键词
14. file 函数被 Python3 废弃,统⼀使⽤ open 来处理⽂件,可以通过 io.IOBase 检查⽂件类型
15. apply 函数被 Python3 废弃
16. 异常 StandardError 被 Python3 废弃,统⼀使⽤ Exception
三 、修改类差异
1. 浮点数除法操作符“/”和“//”的区别
“ / ”:
Python2:若为两个整形数进⾏运算,结果为整形,但若两个数中有⼀个为浮点数,则结果为浮点数;Python3:为真除法,运算结果不再根据参加运算的数的类型。
“//”:
Python2:返回⼩于除法运算结果的最⼤整数;从类型上讲,与"/"运算符返回类型逻辑⼀致
Python3:和 Python2 运算结果⼀样。
2. 异常抛出和捕捉机制区别
Python2
3. raise IOError, “file error” #抛出异常
4. except NameError, err: #捕捉异常
Python3
5. raise IOError(“file error”) #抛出异常
6. except NameError as err: #捕捉异常
7. for 循环中变量值区别
Python2,for 循环会修改外部相同名称变量的值
8. i = 1
9. print ('comprehension: ', [i for i in range(5)])
10. print (‘after: i =’, i ) #i=4
Python3,for 循环不会修改外部相同名称变量的值
11. i = 1
12. print ('comprehension: ', [i for i in range(5)])
13. print (‘after: i =’, i ) #i=1
14. round 函数返回值区别
Python2,round 函数返回 float 类型值
15. isinstance(round(15.5),int) #True
Python3,round 函数返回 int 类型值
16. isinstance(round(15.5),float) #True
17. ⽐较操作符区别
Python2 中任意两个对象都可以⽐较
18. 11 < ‘test’ #True
Python3 中只有同⼀数据类型的对象可以⽐较
19. 11 < ‘test’ # TypeError: unorderable types: int() < str()
四、第三⽅⼯具包差异
五、⼯具安装问题
python基础代码实例6.深拷贝和浅拷贝的区别是什么?
深拷贝和浅拷贝最根本的区别在于是否真正获取⼀个对象的复制实体,⽽不是引⽤。
假设B复制了A,修改A的时候,看B是否发⽣变化:
如果B跟着也变了,说明是浅拷贝,拿⼈⼿短!(修改堆内存中的同⼀个值)
如果B没有改变,说明是深拷贝,⾃⾷其⼒!(修改堆内存中的不同值)
浅拷贝(shallowCopy)只是增加了⼀指针指向已存在的内存地址。
深拷贝(deepCopy)是增加了⼀个指针并且申请了⼀个新的内存,使这个增加的指针指向这个新的内存
使⽤深拷贝的情况下,释放内存的时候不会因为出现浅拷贝时释放同⼀个内存的错误。
浅拷贝:仅仅时指向被复制的内存地址,如果原地址发⽣改变,那么浅复制出来的对象也会相应的改变。spills是什么意思
深拷贝:在计算机中开辟⼀块新的内存地址⽤于存放复制的对象。
但是在python中,对浅拷贝和深拷贝,还需要分数据类型是可变类型还是不可边类型。可变数据类型 ,不可变数据类型
7.位和字节的关系?
位:"位(bit)"是电⼦计算机中最⼩的数据单位。每⼀位的状态只能是0或1。
字节:8个⼆进制位构成1个"字节(Byte)",它是存储空间的基本计量单位。1个字节可以储存1个英⽂字母或者半个汉字,换句话说,1个汉字占据2个字节的存储空间。
8.b、B、KB、MB、GB 的关系?
[图⽚上传失败…(image-88a24-1635233570975)]
9.python递归的最⼤层数?
10.解释 Python 中的 help() 函数和 dir() 函数。
help() 函数返回帮助⽂档和参数说明:
运⾏结果如下:
Help on function copy in module copy
copy(x)
Shallow copy operation on arbitrary Python objects.
See the module』s doc string for more info.
dir() 函数返回对象中的所有成员 (任何类型)
11.当退出 Python 时是否释放所有内存分配?
答案是否定的。那些具有对象循环引⽤或者全局命名空间引⽤的变量,在 Python 退出是往往不会被释放,另外不会释放 C 库保留的部分内容
12.什么是 Python 字典?
epplus和npoi
字典是我在 C++和 Java 中没有见过的数据结构,它拥有键-值对
3
字典是可变的,我们也可以⽤推导式的⽅式创建它.
{25: 5, 16: 4, 9: 3, 4: 2, 1: 1}
13.能否解释⼀下 *args 和 **kwargs?
如果我们不知道将多少个参数传递给函数,⽐如当我们想传递⼀个列表或⼀个元组值时,就可以使⽤*args。3
2
1
4
7
当我们不知道将会传⼊多少关键字参数时,使⽤**kwargs 会收集关键字参数。
a.1
b.2
c.7
使⽤ args 和 kwargs 作为参数名只是举例,可以任意替换。
对于 Python 的基础题任何疑问,请在评论区提问。
14.什么是负索引?
我们先创建如下列表:
与正索引不同,负索引是从右边开始检索。
6
同样可以⽤于列表的切⽚:
[3, 4, 5, 6, 7]
15. 如何随机打乱列表中元素,要求不引⽤额外的内存空间?
我们⽤ random 包中的 shuffle() 函数来实现。
[3, 4, 8, 0, 5, 7, 6, 2, 1]
16.解释 Python 中的 join() 和 split() 函数
join() 函数可以将指定的字符添加到字符串中。
‘1,2,3,4,5’
split() 函数可以⽤指定的字符分割字符串
[‘1’, ‘2’, ‘3’, ‘4’, ‘5’]
17.Python 区分⼤⼩写吗?

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。