1
0

160_functions.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. ## Function Tests.
  2. def f1():
  3. return 'f1'
  4. assert f1() == 'f1'
  5. def f2(a, b, c, d):
  6. return c
  7. assert f2('a', 'b', 'c', 'd') == 'c'
  8. def f3(a,b):
  9. return a - b
  10. assert f3(1,2) == -1
  11. def f4(a,b):
  12. return a + f3(a, b)
  13. assert f4(1,2) == 0
  14. def fact(n):
  15. if n == 1:
  16. return 1
  17. return n * fact(n - 1)
  18. assert fact(5)==120
  19. def f(a=1, b=-1):
  20. return a + b
  21. assert f() == 0
  22. assert f(1, 2) == 3
  23. assert f(-5) == -6
  24. assert f(b=5) == 6
  25. assert f(a=5) == 4
  26. assert f(b=5, a=5) == 10
  27. # test args unpack
  28. def f(a, b, *args):
  29. assert a == 1
  30. assert b == 2
  31. assert args == (3, 4)
  32. f(1, 2, 3, 4)
  33. # test kwargs unpack
  34. def f(a=1, b=2, **kwargs):
  35. assert a == 10
  36. assert b == 2
  37. assert kwargs == {'c': 3, 'd': 4}
  38. f(10, c=3, d=4)
  39. f(a=10, c=3, d=4)
  40. def f(*args):
  41. return 10 * sum(args)
  42. assert f(1, 2, 3) == 60
  43. def f(x, *args, y=3):
  44. i = 0
  45. for j in args:
  46. i += j
  47. return i * y
  48. assert f(10, 1, 2, 3) == 18
  49. def f(a, b, *c, d=2, e=5):
  50. return a + b + d + e + sum(c)
  51. def g(*args, **kwargs):
  52. return f(*args, **kwargs)
  53. assert f(1, 2, 3, 4) == 17
  54. assert f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) == 62
  55. assert f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, d=1, e=2) == 58
  56. assert f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, e=1, d=2) == 58
  57. assert f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, d=1) == 61
  58. assert f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, e=1) == 58
  59. assert f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20) == 217
  60. assert f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, d=1, e=2) == 213
  61. assert g(1, 2, 3, 4) == 17
  62. assert g(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) == 62
  63. assert f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, d=1, e=2) == 58
  64. assert g(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, d=1, e=2) == 58
  65. assert g(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, e=1, d=2) == 58
  66. assert g(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, d=1) == 61
  67. assert g(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, e=1) == 58
  68. a = 1
  69. b = 2
  70. def f():
  71. global a, b
  72. a = 3
  73. b = 4
  74. f()
  75. assert a == 3
  76. assert b == 4
  77. def g(a, b, *args, c=1, d=2, **kwargs):
  78. S = a + b + c + d + sum(args)
  79. return S, kwargs
  80. S, kwargs = g(1, 2, 3, 4, 5, c=4, e=5, f=6)
  81. # a = 1
  82. # b = 2
  83. # c = 4
  84. # d = 2
  85. # sum(args) = 3 + 4 + 5 = 12
  86. # S = 1 + 2 + 4 + 2 + 12 = 21
  87. assert S == 21
  88. assert kwargs == {'e': 5, 'f': 6}
  89. # test tuple defaults
  90. def f(a=(1,)):
  91. return a
  92. assert f() == (1,)
  93. def f(a=(1,2)):
  94. return a
  95. assert f() == (1,2)
  96. def f(a=(1,2,3)):
  97. return a
  98. assert f() == (1,2,3)
  99. def f(a=(1,2,3,)):
  100. return a
  101. assert f() == (1,2,3)
  102. def f(a=(1,(2,3))):
  103. return a
  104. assert f() == (1,(2,3))
  105. def f(a=((1,2),3), b=(4,)):
  106. return a, b
  107. assert f() == (((1,2),3), (4,))
  108. def f(a, b):
  109. return a + b
  110. # test multiple lines
  111. def f(
  112. a,
  113. b: int
  114. ):
  115. return a + b
  116. assert f(1, 2) == 3
  117. def f(a,
  118. b: int):
  119. return a + b
  120. assert f(1, 2) == 3
  121. # try:
  122. # f(a=1)
  123. # exit(1)
  124. # except TypeError:
  125. # pass
  126. # try:
  127. # f(1)
  128. # exit(1)
  129. # except TypeError:
  130. # pass
  131. # try:
  132. # f(1, 2, 3)
  133. # exit(1)
  134. # except TypeError:
  135. # pass
  136. # # empty function
  137. # def f(a, b, c):
  138. # pass
  139. # assert f(1, 2, 3) == None
  140. # class A:
  141. # def f(self, a, b, c):
  142. # pass
  143. # assert A().f(1, 2, 3) == None