def c(*x,**y):
print x,y
def a(*x,**y):
print x
def b(*x1,**y1):
c(*(x+x1),**dict(y,**y1))
b()
a(1,2,3,a=1,b=2)(4,5,6,c='222',d='aaa')#error
答案 0 :(得分:2)
函数a()没有返回函数;实际上,它返回None
。因此,第二组括号是对None对象的调用 - 这是一个错误
您是否打算返回一个函数,比如像return b
那样做什么?
答案 1 :(得分:1)
将b()替换为返回b
在Python 3.1中运行:
def c(*x,**y):
print(x,y)
def a(*x,**y):
print(x)
def b(*x1,**y1):
c(*(x+x1),**dict(y,**y1))
return b
a(1,2,3,a=1,b=2)(4,5,6,c='222',d='aaa')
产生
>>> ================================ RESTART ================================
>>>
(1, 2, 3)
(1, 2, 3, 4, 5, 6) {'a': 1, 'c': '222', 'b': 2, 'd': 'aaa'}
>>>
答案 2 :(得分:1)
a(1,2,3,a=1,b=2)(4,5,6,c='222',d='aaa')#error
我假设你有“对象不可调用”的例外..
可能你需要返回一个函数对象'b'(不是'b'的结果)?
所以而不是
b()
试
return b # without braces and with 'return'
答案 3 :(得分:1)
我得到的错误是:
追踪(最近的呼叫最后):
文件“./tmp.py”,第11行,in 一个(1,2,3,A = 1,B = 2)(4,5,6,C = '222',d = 'AAA') TypeError:'NoneType'对象不是 调用
我可以通过将您的代码更改为:
来解决此问题#!/usr/bin/python
def c(*x,**y):
print x,y
def a(*x,**y):
print x
def b(*x1,**y1):
c(*(x+x1),**dict(y,**y1))
return b
a(1,2,3,a=1,b=2)(4,5,6,c='222',d='aaa')
这会产生输出:
(1,2,3)
(1,2,3,4,5,6){'a':1, 'c':'222','b':2,'d':'aaa'}
你还没有说明你想要达到的目标,所以我不知道这是否是你想要的。