面试题
- iterables 和iterators之间的区别
- iterable可迭代是一个对象,可以对其进行迭代。在可迭代的情况下,整个数据一次存储在内存当中
- iterators迭代器是用来在对象上迭代的对象。他旨在被调用时初始化或存储在内存中。迭代器使用next从对象中抽取出来
- 什么是猴子补丁
- 写一个简单的python socket编程
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(("localhost", 8020))
sock.listen(5)
while True:
conn, addr = sock.accept()
try:
conn.settimeout(5)
buff = conn.recv(1024)
if buff.decode("utf-8") == "1":
conn.send("hello, client...".encode("utf-8"))
else:
conn.send("please ggo out".encode("utf-8"))
except sock.timeout:
print("error")
finally:
conn.close()
import socket
import time
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(("localhost", 8020))
time.sleep(1)
sock.send('1'.encode("utf-8"))
print(sock.recv(1024).decode("utf-8"))
sock.close()
- 一个包里有三个模块,mod1.py, mod2.py mod3.py 但使用了from demopack import * 导入模块,如何保证只有mod1,mod3被导入了
all = ['mod1','mod2']
- 在python中__name__的作用是什么
__name__是一个唯一的变量。由于python没有公开main()函数,所以,当他的解释器要运行脚本的时候,他首先执行缩进到第0行的代码,为了查看main()是否被调用,我们可以在if子句中使用__name__变量与main值进行比较
- 在python中启动一个线程,启动一个进程
import threading
def start_thread(name):
print(f"{name} start thread ...")
if __name__ == "__main__":
t = threading.Thread(target=start_thread, args=("Guo",))
t.start()
t.join()
print('thread end ...')
from multiprocessing import Process
def start_process(name):
print(f"{name} start process...")
if __name__ == "__main__":
p = Process(target=start_process, args=("guo", ))
p.start()
p.join()
print("process end...")
- python文件中if name==“main”: 为什么要有这么一行
在python中 if __name__ == "__main__"这行代码检查是否当前运行的脚本作为主程序运行,而不是作为模块被另外一个脚本名导入,当python脚本直接运行是,python解释器会把特殊变量__name__设置为__main__,如果这个文件被其他文件作为模块导入,__name__的值将会变成该文件的名字。因此,通过这个条件判断,你可以控制某些代码只在该脚本作为主要程序运行时执行,而在被导入时不执行,这种用法通常用于脚本和程序的主入口,允许代码技能作为可执行程序运行,也能作为模块被其他程序导入和服用,增加的代码的灵活性和可能性
- 如果mysql中的字段为long,python3中用什么类型映射
python3中没有long,只有无限精度的int
- 面向对象中怎么实现只读属性?
- 在python中 以双下划线开头的属性或者方法都被视为私有成员,这意味着他们被意图限制在类的内部使用,不能直接从类的外部访问,不过,python并没有强制实施这种限制访问,而是通过一个名称改写的机制来实现这一点
class MyCls:
__age = 10
@property
def age(self):
return self.__age
a = MyCls()
print(a.age)
- 有没有一个工具可以帮助查找python的bug和静态的代码分析