2013-11-29 63 views
2

我想了解这个Python代码的readRequest是一个未声明的变量在Python函数的引用?

sc, sockname = s.accept() 
    ... 
requestType = data['RequestType'] 
print '[-] Type of data:',type(data) 
print '[-] Data:',data 
if requestType == 1: 
    sc.sendall(readRequest) 

readRequest看起来像一个变量,但如果我上readRequest做一个搜索我只找到一个名为readRequest方法,这样

def readRequest(path): 

我没有看到一个名为readRequest变量。

什么在这个Python代码是怎么回事?是readRequest某种短手的调用该方法readRequest?如果是这样,什么参数通过?

我期待通过代码,我发现。代码是否有错误或不完整?

+1

作为一个非常挑剔的笔记:这几乎肯定不是一种方法,而是一种功能。当你将一个函数定义为类的一部分时,这是一种方法。 (当你将一个函数定义为一个类的一部分时,几乎总是要么有一个额外的'self'第一个参数,要么用'@ classmethod'或'@ staticmethod'来装饰它。) – abarnert

回答

0

要么你发现了一个错误,要么你错了readRequest是什么。

将函数作为参数传递给另一个函数(请参阅map函数,其中第一个参数需要函数)是完全有效的。

但是sc变量几乎可以肯定是一个socket,因为它来自sc, sockname = s.accept,这意味着sc.sendall是一个函数,它的字节串,并发送这些字节到客户端上的插座的另一端。函数是不是字节的字符串,所以你会得到一个看起来像这样的错误:

TypeError: 'function' does not support the buffer interface 

如果出现这种情况,很可能是谁写这段代码旨在呼叫readRequest并通过它的结果,而不是只是通过函数本身,在这种情况下,你有解决它:

sc.sendall(readRequest()) 

如果,另一方面,有没有错误,这意味着readRequest毕竟不是一个函数,而是一个字符串,你只是没有找到它在搜索。