习题1
1、简述Python上下文管理器原理,并用上下文管理器简单实现将”hello world”写入文件的功能。
Python中提供了上下文管理器的概念,可以通过上下文管理器来定义/控制代码块执行前的准备动作,以及执行后的收尾动作。例如with语句,with语句可以在代码块运行前进入一个运行时上下文(执行__enter__方法),并在代码块结束后退出该上下文(执行__exit__方法)。
with open('a.txt','w',encoding='utf-8') as read_f : read_f.write("hello world")
2、简述MyISAM和InnoDB的特点。
MyISAM:不支持事务、表锁设计、支持全文索引,主要面向一些 OLAP 数 据库应用。
InnoDB:支持事务,其设计目标主要面向联机事务处理(OLTP)的应用。其 特点是行锁设计、支持外键,并支持类似 Oracle 的非锁定读,即默认读取操作不会产生锁。
3、什么是GIL
全局解释器锁,在CPython中,全局解释器锁是一个互斥锁,或GIL,它可以防止多个本地线程执行Python字节码。这个锁是必需的,主要是因为CPython的内存管理不是线程安全的。
4、Python里面search()和match()的区别
search()和match()方法都是re模块的方法。search()函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。match()和search()基本一样不同处是仅在字符串开始处进行匹配。
5、请使用Python实现快速排序
import random def partition(li, left, right): # ri = random.randint(left, right) # li[left], li[ri] = li[ri], li[left] tmp = li[left] while left < right: while left < right and li[right] >= tmp: right -= 1 li[left] = li[right] while left < right and li[left] <= tmp: left += 1 li[right] = li[left] li[left] = tmp return left def _quick_sort(li, left, right): if left < right: # 至少有两个元素 mid = partition(li, left, right) _quick_sort(li, left, mid-1) _quick_sort(li, mid+1, right) def quick_sort(li): return _quick_sort(li, 0, len(li)-1) li = list(range(10000)) random.shuffle(li) quick_sort(li)
6、简述Python中的垃圾回收机制
在Python中,如果一个对象的引用数为0,Python就会回收这个对象的内存。
7、什么是python中的装饰器,怎么使用
本质就是函数,功能是为其他函数添加新功能。Python为我们提供了语法糖来使用,通俗说就是装饰器名前加@放在需要装饰的函数上面使用
import time def timer(func): def inner(): start = time.time() func() print(time.time() - start) return inner @timer #==> func1 = timer(func1) def func1(): print('in func1') func1()
8、如何查看占用8080端口是的什么进程
在cmd中运行:
netstat -aon|findstr “8080”
查看端口“8080”被哪个应用占用,,继续执行下面命令:
tasklist|findstr “进程号”
9、什么是lambda函数?他有什么好处
lambda函数是匿名函数,简单的需要用函数去解决的问题,匿名函数的函数体,只有一行。可以简化代码
10、有a,b两个数,如何不使用第3个变量,将a和b的是、值交换。
a,b = 10,20 print(a,b) # 10,20 a,b = b,a print(a,b) #20,10