我只是想知道为什么我会得到以下结果
从下面的代码
def sendHTTP(httpStatus):
status_code = 400
reason = "Unauthorized"
httpStatus(Code=req.status_code,Desc=req.reason)
return httpStatus
if __name__ == '__main__':
httpStatus = namedtuple('httpStatus','Code Desc')
http_results = sendHTTP(httpStatus)
print "1:",http_results
打印结果:
^{pr2}$同时
def sendHTTP(httpStatus):
status_code = 400
reason = "Unauthorized"
b = httpStatus(Code=req.status_code,Desc=req.reason)
return b
if __name__ == '__main__':
httpStatus = namedtuple('httpStatus','Code Desc')
http_results = sendHTTP(httpStatus)
print "1:",http_results
打印结果为:
1: httpStatus(Code=401, Desc='Unauthorized')
有人能解释一下为什么添加b
变量会给出值而不是变量名?在
在第一个函数中,忽略创建的实例,然后返回
namedtuple
类。您可以直接打印类而不使用函数获得相同的结果:在第二个函数中,将创建的实例分配给变量,然后返回变量引用的任何内容(即创建的实例)。在
您可以放弃变量,直接返回实例:
^{pr2}$请注意,这与命名元组无关。对于任何类都会发生这种情况;您返回的是类对象本身。在
因为在第一种情况下,您不会对来自
httpStatus
调用的结果实例执行任何操作,然后只返回作为参数传递的namedtuple类。在而在第二个例子中,}的实例,它是用
b
被分配给了{然后返回。在
如果你想在两种情况下都有相同的(正确的)行为,你应该直接
^{pr2}$在第一种情况下,不要使用没有return语句或赋值的无用调用。在
相关问题 更多 >
编程相关推荐