孝感市网站建设公司,公司门户官网,湖南长沙房价2022最新价格,中文域名转码网站第一部分#xff08;python基础篇#xff09;80题 为什么学习Python#xff1f;* # 1. python应用于很多领域#xff0c;比如后端#xff0c;前端#xff0c;爬虫#xff0c;机器学习#xff08;人工智能#xff09;等方面#xff0c;几乎能涵盖各个开发语言的领域python基础篇80题 为什么学习Python* # 1. python应用于很多领域比如后端前端爬虫机器学习人工智能等方面几乎能涵盖各个开发语言的领域同时它相对于其他语言而言简洁。通过什么途径学习的Python* # 通过自学网上看视频资料网上买书的方法学习Python和Java、PHP、C、C#、C等其他语言的对比*
python
1. 简单————Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样尽管这个英语的要求非常严格。Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。
2. 易学————就如同你即将看到的一样Python极其容易上手。前面已经提到了Python有极其简单的语法。
3. 免费、开源————Python是FLOSS自由/开放源码软件之一。简单地说你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。这是为什么Python如此优秀的原因之一——它是由一群希望看到一个更加优秀的Python的人创造并经常改进着的。
4. 高层语言————当你用Python语言编写程序的时候你无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
5. 可移植性————由于它的开源本质Python已经被移植在许多平台上经过改动使它能够工作在不同平台上。如果你小心地避免使用依赖于系统的特性那么你的所有Python程序无需修改就可以在下述任何平台上面运行。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC、Symbian以及Google基于linux开发的Android平台。
6. 解释性————这一点需要一些解释。一个用编译性语言比如C或C写的程序可以从源文件即C或C语言转换到一个你的计算机使用的语言二进制代码即0和1。这个过程通过编译器和不同的标记、选项完成。当你运行你的程序的时候连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码 运行 程序。在计算机内部Python解释器把源代码转换成称为字节码的中间形式然后再把它翻译成计算机使用的机器语言并运行。事实上由于你不再需要担心如何编译程序如何确保连接转载正确的库等等所有这一切使得使用Python更加简单。由于你只需要把你的Python程序拷贝到另外一台计算机上它就可以工作了这也使得你的Python程序更加易于移植。
7. 面向对象————Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C和Java相比Python以一种非常强大又简单的方式实现面向对象编程。
8. 可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开你可以把你的部分程序用C或C编写然后在你的Python程序中使用它们。
9. 可嵌入性————你可以把Python嵌入你的C/C程序从而向你的程序用户提供脚本功能。
10. 丰富的库————Python标准库确实很庞大。它可以帮助你处理各种工作包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI图形用户界面、Tk和其他与系统有关的操作。记住只要安装了Python所有这些功能都是可用的。这被称作Python的“功能齐全”理念。除了标准库以外还有许多其他高质量的库如wxPython、Twisted和Python图像库等等。缺点
1. 运行速度慢相比于C/C运行速度偏慢不过对于用户而言机器上运行速度是可以忽略的。2. 构架选择太繁杂没有像C#这样的官方.net构架也没有像ruby由于历史较短构架开发的相对集中所以人人都有不同的方案。C:优点1. 简洁紧凑、灵活方便 2. 运算符丰富3. 数据结构丰富4. C是结构式语言5. C语法限制不太严格程序设计自由度大6. C语言允许直接访问物理地址可以直接对硬件进行操作7. C语言程序生成代码质量高程序执行效率高8. C语言适用范围大可移植性好9. C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于多种机型10. 有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务便于开发和维护缺点运算符和运算优先级过多不便于记忆语法定义不严格编程自由度大对新手不友好。更多对比请参考https://www.jianshu.com/p/7c8fdedf352e简述解释型和编译型编程语言 # 同声翻译解释性语言# 谷歌翻译编译性语言# 个人感觉他是想考察你是否对其他的语言有所了解同时也想看看你对python的理解有多深Python解释器种类以及特点*
1. CPythonc语言开发的 使用最广的解释器
2. IPython基于cpython之上的一个交互式计时器 交互方式增强 功能和cpython一样
3. PyPy目标是执行效率 采用JIT技术 对python代码进行动态编译提高执行效率
4. JPython运行在Java上的解释器 直接把python代码编译成Java字节码执行
5. IronPython运行在微软 .NET 平台上的解释器把python编译成. NET 的字节码
位和字节的关系 # 1字节Bytes 8位bitb、B、KB、MB、GB 的关系
1B 8b
1KB 1024B
1MB 1024KB
1GB 1024MB
请至少列举5个 PEP8 规范越多越好 *
1. 代码排版2. 文档排版3. 避免多余空格4. 注释5. 命令风格6. 编码建议通过代码实现如下转换 二进制转换成十进制v “0b1111011”
十进制转换成二进制v 18
八进制转换成十进制v “011”
十进制转换成八进制v 30
十六进制转换成十进制v “0x12”
十进制转换成十六进制v 87
第一题
v b0b1111011
print(int(v,2))第二题
print(转换为二进制为, bin(18))第三题
八进制转换成十进制v “011”
print(int(011,8))第四题print(oct(v))第五题
v 0x12
print(int(v,16))第六题
v 87
print(hex(v))请编写一个函数实现将IP地址转换成一个整数。如 10.3.9.12 转换规则为 10 00001010
3 00000011
9 00001001
12 00001100
再将以上二进制拼接起来计算十进制结果00001010 00000011 00001001 00001100 IP 10.3.9.12def addr2dec(addr):将点分十进制IP地址转换成十进制整数items [int(x) for x in addr.split(.)]# return sum([items[i] [24, 16, 8, 0][i] for i in range(4)])return sum([items[i]*2**[24,16,8,0][i] for i in range(4)])print(addr2dec(IP))
# 167971084 python递归的最大层数第一种 def foo(n):print(n)n 1foo(n)if __name__ __main__:foo(1)# 998 第二种 import syssys.setrecursionlimit(100000)def foo(n):print(n)n 1foo(n)if __name__ __main__:foo(1)# 3221左右 求结果 v1 1 or 3
v2 1 and 3
v3 0 and 2 and 1
v4 0 and 2 or 1
v5 0 and 2 or 1 or 4
v6 0 or False and 1 v1 1 or 3 v1
1v2 1 and 3v2
3v3 0 and 2 and 1v3
0v4 0 and 2 or 1v4
1v5 0 and 2 or 1 or 4v5
1v6 0 or False and 1v6
False
对于python而言
1. 在不加括号时候and优先级大于or
2. x or y的值只可能是x或yx为真就是xx为假就是y
3. x and y的值只可能是x或yx为真就是yx为假就是xascii、unicode、utf-8、gbk 区别
1. ascii 8位一个字节2. unicode英文32位 四个字节中文32位 四个字节
3. utf-8英文8位 一个字节中文16位 两个字节
4. gbk英文8位 一个字节中文16位 两个字节python3中str 在内存中是unicode编码bytes类型对于英文str:表现形式s alex编码方式010101010 unicodebytes:表现形式s balex编码方式000101010 utf-8 gbk对于中文str:表现形式s 中国编码方法010101010 unicodebytes:表现形式s b x\e91\e91\e01\e21\e31\e32编码方式000101010 utf-8 gbkencode 编码如何将str -- bytes使用方法str.encode(utf-8)decode 解码如何将bytes -- str使用方法bytes.decode(utf-8)字节码和机器码的区别
机器码机器语言字节码汇编语言三元运算规则以及应用场景a 10
b 20
x a if a b else b# 为真时的结果 if 判断条件 else 为假时的结果注意没有冒号 列举 Python2和Python3的区别
1. 2中print 字符串 被 3中的 print()取代
2. 2中input得到的是int类型raw_input得到的是str类型而3中只有input且是str类型
3. 2中字符串以8-bit字符串存储3中字符串以16-bit unicode字符串存储
4. 2中try:passexcept Exception,e:pass3中try:passexcept Exception as e:pass用一行代码实现数值交换
a 1 b 2a,b b,a Python3和Python2中 int 和 long的区别
python2中有long类型
python3中没有long类型只有int类型xrange和range的区别
在python2中xrange 返回的是一个迭代值生成器range 返回的是一个列表在python3中range 返回的是一个迭代值生成器 文件操作时xreadlines和readlines的区别
xreadlines()则直接返回一个iter(file)迭代器在Python 2.3之后已经不推荐这种表示方法了readlines()是把文件的全部内容读到内存并解析成一个list当文件的体积很大的时候需要占用很多内存使用该方法是一种不明智的做法。列举布尔值为False的常见值# 0,None,空空容器,Flase 字符串、列表、元组、字典每个常用的5个方法
字符串split切片for循环成员运算strip,len,replace,lower(),upper(),find()列表 append(),for循环pop(),排序join,insert(),切片len(),count()增删改查
元组查index()count()len()比较cmp(tuple1,tuple2) 比较两个元组元素len(tuple)计算元组元素个数max(tuple)返回元组中元素最大值。min(tuple)返回元组中元素最小值。tuple(seq)将列表转换为元组 lambda表达式格式以及应用场景# lambda arges1 [arges2...]: 表达式
lambda x: x2 pass的作用# 相当于填充代码 *args和**kwargs作用*args 作为形参当用户传入多个位置参数时其值都存在args中以元组的形式**kwargs 作为形参当用户传入多个关键字参数时其值都存在kwargs中以键值对的形式存储 is和的区别# is 是判断内存地址的身份运算符# 是判断值是否相等
内存地址相同值一定相等值相等内存地址不一定相等。 简述Python的深浅拷贝以及应用场景
普通拷贝
a 是 b的普通拷贝则a发生改变 b也发生改变。b发生改变a也发生改变浅拷贝
a 是 b的浅拷贝则a中的不可变数据类型发生改变b不会变。a中可变类型发生改变b也会随之改变深拷贝
a 是 b的深拷贝ab无关# 浅拷贝
import copy
copy.copy()# 深拷贝
import copy
copy.deepcopy() 28. Python垃圾回收机制 python里每一个东西都是对象它们的核心就是一个结构体PyObject typedef struct_object {int ob_refcnt;struct_typeobject *ob_type;
} PyObject; PyObject是每个对象必有的内容其中ob_refcnt就是做为引用计数。当一个对象有新的引用时它的ob_refcnt就会增加当引用它的对象被删除它的ob_refcnt就会减少 #define Py_INCREF(op) ((op)-ob_refcnt) //增加计数
#define Py_DECREF(op) \ //减少计数if (--(op)-ob_refcnt ! 0) \; \else \__Py_Dealloc((PyObject *)(op)) 当引用计数为0时该对象生命就结束了。 引用计数机制的优点 简单实时性一旦没有引用内存就会直接释放了。不用像其他机制等到特定时机。实时性还带来一个好处处理回收内存的时间分摊到了平时引用计数机制的缺点 维护引用计数消耗资源循环引用 list1 []
list2 []
list1.append(list2)
list2.append(list1) list1与list2相互引用如果不存在其他对象对它们的引用list1与list2的引用计数也仍然为1所占用的内存永远无法被回收这将是致命的。 对于如今的强大硬件缺点1尚可接受但是循环引用导致内存泄露注定python还将引入新的回收机制。(标记清除和分代收集) 参考连接https://www.cnblogs.com/pinganzi/p/6646742.html#_label629. Python的可变类型和不可变类型
可变类型列表字典集合不可变类型整型浮点型字符串 求结果 v dict.fromkeys([k1,k2],[])
v[k1].append(666)
print(v)
v[k1] 777
print(v) {k1: [666], k2: [666]}
{k1: 777, k2: [666]}原因k1和k2指向的是同一个列表也就是同一块内存空间。求结果 def num():return [lambda x:i*x for i in range(4)]print([m(2) for m in num()]) [6, 6, 6, 6]
原因只有到需要计算i的值时才会真正计算i的值 类似的题目 flist []
for i in range(3):def foo(x):print(x i)flist.append(foo)for f in flist:f(2) 4
4
4
原因只有到需要计算i的值时才会真正去算i的值。转载于:https://www.cnblogs.com/plf-Jack/p/11093713.html