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

在Python中,未声明的变量是对函数的引用吗?,python,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进行搜索,我只会找

我试图理解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方法的简写吗?如果是,传递的参数是什么


我正在查看我找到的代码。有没有可能代码只是有一个bug或者是不完整的

要么你发现了一个bug,要么你对什么是
readRequest
的理解有误

将一个函数作为参数传递给另一个函数是完全有效的(例如,请参见函数,它期望函数作为其第一个参数)

但是
sc
变量几乎肯定是a,因为它来自
sc,sockname=s.accept
,这意味着这是一个函数,它接受一个字节字符串,并将这些字节发送到套接字另一端的客户机。函数不是一个字节字符串,因此会出现如下错误:

TypeError: 'function' does not support the buffer interface
如果发生这种情况,很可能编写此代码的人打算调用
readRequest
并传递其结果,而不仅仅是传递函数本身,在这种情况下,您可以使用以下方法修复它:

sc.sendall(readRequest())

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

作为一个非常挑剔的注释:这几乎肯定不是一个方法,而是一个函数。当您将函数定义为类的一部分时,这就是一个方法。(当您将函数定义为类的一部分时,几乎总是,要么它有一个额外的
self
第一个参数,要么它由
@classmethod
@staticmethod
修饰)