Python 为什么我的代码出错,我想打印两个函数的参数

Python 为什么我的代码出错,我想打印两个函数的参数,python,Python,用返回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)) b() a(1,2,3,a=1,b=2)(4,5,6,c='222',d='aaa')#error 产生: def c(*x,**y): print(x,y) def a(*x,**y): p

用返回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))
    b()

a(1,2,3,a=1,b=2)(4,5,6,c='222',d='aaa')#error
产生:

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')
用返回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))
    b()

a(1,2,3,a=1,b=2)(4,5,6,c='222',d='aaa')#error
产生:

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')
函数a()未返回函数;实际上,它返回
None
。因此,第二组括号是对None对象的调用,这是一个错误。
您是否打算返回函数,比如执行类似于
返回b
的操作?

函数a()不返回函数;实际上,它返回
None
。因此,第二组括号是对None对象的调用,这是一个错误。
>>> ================================ RESTART ================================
>>> 
(1, 2, 3)
(1, 2, 3, 4, 5, 6) {'a': 1, 'c': '222', 'b': 2, 'd': 'aaa'}
>>> 
您是否打算返回函数,例如执行类似于返回b的操作

>>> ================================ RESTART ================================
>>> 
(1, 2, 3)
(1, 2, 3, 4, 5, 6) {'a': 1, 'c': '222', 'b': 2, 'd': 'aaa'}
>>> 
我假设您遇到了“对象不可调用”异常

可能需要返回函数对象“b”(不是“b”的结果)

所以不是

a(1,2,3,a=1,b=2)(4,5,6,c='222',d='aaa')#error
试一试

我假设您遇到了“对象不可调用”异常

可能需要返回函数对象“b”(不是“b”的结果)

所以不是

a(1,2,3,a=1,b=2)(4,5,6,c='222',d='aaa')#error
试一试

我得到的错误是:

回溯(最近一次呼叫最后一次):
文件“/tmp.py”,第11行,在 a(1,2,3,a=1,b=2)(4,5,6,c='222',d='aaa') TypeError:“非类型”对象不是 可调用

我可以通过将您的代码更改为:

return b # without braces and with 'return'
这将产生以下输出:

(1、2、3)

(1,2,3,4,5,6){'a':1, ‘c’:‘222’,‘b’:2,‘d’:‘aaa’}

你还没有说明你想要达到什么,所以我不知道这是否是你想要的。

我得到的错误是:

回溯(最近一次呼叫最后一次):
文件“/tmp.py”,第11行,在 a(1,2,3,a=1,b=2)(4,5,6,c='222',d='aaa') TypeError:“非类型”对象不是 可调用

我可以通过将您的代码更改为:

return b # without braces and with 'return'
这将产生以下输出:

(1、2、3)

(1,2,3,4,5,6){'a':1, ‘c’:‘222’,‘b’:2,‘d’:‘aaa’}


你还没有说明你想要实现什么,所以我不知道这是否是你想要的。

你想要实现什么?你到底得到了什么错误信息?你想实现什么?你到底收到了什么错误消息?是的,Python不会自动返回函数的最后一行。即使返回了,返回b()也不会起作用,因为那样会返回b(无)的返回值。是的,Python不会自动返回函数的最后一行。即使返回了,也会返回b()不起作用,因为这将返回b的返回值(无)。