0

我想在 Iron Python 中使用重载,但似乎它不起作用:

import sys
import clr

def  af(a, b):
     c = a+b
     print c
     return c
def af(j):
  y = j*j
  print y
  return y

 af(6,7)
 af(5)

我收到一个错误 =\ 有没有办法使用重载?我的目的是编写一个函数:foo(doAction,numTimes) 默认情况下,如果我使用foo(action):它会执行一次,或者我会写:foo(action,6)

多谢!!!

4

1 回答 1

1

IronPython 可能在 CLR 上运行,但这并不能使其成为 C#。在任何一种 Python 中,您只能定义一次函数。定义一个函数实际上只是分配一个名称,因此在您的代码中,您将一个函数分配给af,然后将另一个函数分配给相同的名称,因此第一个被简单地丢弃。

在 Python 中执行此操作的方法是通过默认参数:

def aj(a, b=None):
    if b is not None:
        result = a + b
    else:
        result = a * a
    print result
    return result

当然,对于您的实际用例,您可以numtimes使用默认值 1 进行定义:

def foo(action, numtimes=1):
    # whatever
于 2013-10-09T08:47:04.963 回答