在Python中,当将字节数组传递给函数时,它是通过引用还是通过值传递的?
在Python 3.7中,我试图模拟HTTPResponse对象以进行测试。当我从http.client.HTTPResponse对象内部复制代码时,得到的结果与标准库得到的结果不同。
我的代码:
#I call the mock buffer like this
intBytesBuffered = self.HTTPResponseMock.readinto(tempBuffer)
HTTPResponseMock
def read(self, amt = None):
if amt is not None:
# Amount is given, implement using readinto
b = bytearray(amt)
else:
b = bytearray(len(self.MockedContentBuffer))
n = self.readinto(b)
return memoryview(b)[:n].tobytes()
def readinto(self, b):
"""docstring"""
#mvb = memoryview(b)
bufferSize = len(b)
contentSize = len(self.MockedContentBuffer)
b.clear()
if bufferSize >= contentSize:
b = self.MockedContentBuffer
else:
b = self.MockedContentBuffer[0:bufferSize]
del self.MockedContentBuffer[0:bufferSize]
return len(b)
在here行436-500中找到来自http.client.HTTPResponse的Relevent函数
标准库中最重要的摘录在这里是read调用readinto的地方:
b = bytearray(amt)
n = self.readinto(b)
return memoryview(b)[:n].tobytes()
标准库在调用缓冲区方面的工作与我差不多,但是当运行该库时,摘录中的字节变量b
将返回其中的数据。当我致电read时,tempBuffer
返回空吗?