1
0

21_functions.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  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. def f(*args):
  28. return 10 * sum(args)
  29. assert f(1, 2, 3) == 60
  30. def f(x, *args, y=3):
  31. i = 0
  32. for j in args:
  33. i += j
  34. return i * y
  35. assert f(10, 1, 2, 3) == 18
  36. def f(a, b, *c, d=2, e=5):
  37. return a + b + d + e + sum(c)
  38. def g(*args, **kwargs):
  39. return f(*args, **kwargs)
  40. assert f(1, 2, 3, 4) == 17
  41. assert f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) == 62
  42. assert f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, d=1, e=2) == 58
  43. assert f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, e=1, d=2) == 58
  44. assert f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, d=1) == 61
  45. assert f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, e=1) == 58
  46. assert f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20) == 217
  47. 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
  48. assert g(1, 2, 3, 4) == 17
  49. assert g(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) == 62
  50. assert g(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, d=1, e=2) == 58
  51. assert g(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, e=1, d=2) == 58
  52. assert g(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, d=1) == 61
  53. assert g(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, e=1) == 58
  54. a = 1
  55. b = 2
  56. def f():
  57. global a, b
  58. a = 3
  59. b = 4
  60. f()
  61. assert a == 3
  62. assert b == 4
  63. def g(a, b, *args, c=1, d=2, **kwargs):
  64. S = a + b + c + d + sum(args)
  65. return S, kwargs
  66. S, kwargs = g(1, 2, 3, 4, 5, c=4, e=5, f=6)
  67. # a = 1
  68. # b = 2
  69. # c = 4
  70. # d = 2
  71. # sum(args) = 3 + 4 + 5 = 12
  72. # S = 1 + 2 + 4 + 2 + 12 = 21
  73. assert S == 21
  74. assert kwargs == {'e': 5, 'f': 6}
  75. # test tuple defaults
  76. def f(a=(1,)):
  77. return a
  78. assert f() == (1,)
  79. def f(a=(1,2)):
  80. return a
  81. assert f() == (1,2)
  82. def f(a=(1,2,3)):
  83. return a
  84. assert f() == (1,2,3)
  85. def f(a=(1,2,3,)):
  86. return a
  87. assert f() == (1,2,3)
  88. def f(a=(1,(2,3))):
  89. return a
  90. assert f() == (1,(2,3))
  91. def f(a=((1,2),3), b=(4,)):
  92. return a, b
  93. assert f() == (((1,2),3), (4,))
  94. def f(a, b):
  95. return a + b
  96. try:
  97. f(a=1)
  98. exit(1)
  99. except TypeError:
  100. pass
  101. try:
  102. f(1)
  103. exit(1)
  104. except TypeError:
  105. pass
  106. try:
  107. f(1, 2, 3)
  108. exit(1)
  109. except TypeError:
  110. pass
  111. # empty function
  112. def f(a, b, c):
  113. pass
  114. assert f(1, 2, 3) == None
  115. class A:
  116. def f(self, a, b, c):
  117. pass
  118. assert A().f(1, 2, 3) == None