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

 

版权声明:本文为liluning原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/liluning/p/8445498.html