HomeMAL' // MANUFACTORUM
datacrypt
Piton / tests / features / 10_func_def.py
tests/features/10_func_def.py1.5 KB
# no args, no return
def a():
    print_int(1)
a()

# single arg, no return
def b(a: int):
    print_int(a)
b(2)

# multiple args, no return
def c(a: int, b: int):
    print_int(a)
    print_int(b)
c(3, 4)

# no args, return
def d() -> int:
    return 4
print_int(d())

# single arg, return
def e(a: int) -> int:
    print_int(5)
    print_int(a)
    return 1
print_int(e(6))

# multiple args, return
def f(a: int, b: int) -> int:
    print_int(7)
    print_int(a)
    print_int(b)
    return 1
print_int(f(8, 9))

# more than 4 args
def fbis(a: int, b: int, c: int, d: int, e: int) -> int:
    return a + b + c + d + e
print_int(fbis(1, 2, 3, 4, 5))

# nested calls
def g(a: int):
    print_int(a)

def h(a: int):
    g(a)
h(10)

# recursivity
def i(a: int):
    print_int(a)
    if a > 0:
        i(a - 1)
i(11)

# nested definitions
def j(a: int) -> int:
    def k(a: int) -> int:
        return a
    print_int(k(a))
j(12)

# recursivity for nested functions
def k():
    def i(a: int):
        print_int(a)
        if a > 0:
            i(a - 1)
    i(11)
k()

# returns
# return without value
def l():
    print_int(13)
    return
    # no typecheck after return
    print_bool("ABC")
l()

# return inside if
def m():
    if (True):
        print_int(14)
        return
    else:
        print_int(15)
    print_int(16)
m()

# return inside while
def n():
    while (True):
        return
        print_int(17)
n()

# no semantics check after return
def o():
    print_int(18)
    return
    a: int = "ABC" + True
o()