未声明的变量是Python中函数的引用吗?

时间:2013-11-29 05:49:40

标签: python

我正在尝试理解此Python代码中的readRequest

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 个答案:

答案 0 :(得分:0)

你发现了一个错误,或者你对readRequest的错误是错误的。

将函数作为参数传递给另一个函数是完全有效的(例如,参见map函数,该函数需要一个函数作为其第一个参数。)

但是sc变量几乎可以肯定是socket,因为它来自sc, sockname = s.accept,这意味着sc.sendall是一个带有字符串并发送的函数那些字节到套接字另一端的客户端。函数不是字节串,因此您将得到如下所示的错误:

TypeError: 'function' does not support the buffer interface

如果发生这种情况,很可能是那些编写此代码的人打算调用 readRequest并传递其结果,而不仅仅是传递函数本身,在这种情况下,您将修复它:

sc.sendall(readRequest())

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