Вступ до обробки помилок

Вступ до функцій у Python

Hugo Bowne-Anderson

Instructor

Функція float()

Знімок екрана 2016-08-09 о 9:38:27 AM-4885.png

Вступ до функцій у Python

Передавання некоректного аргументу

float(2)
2.0
float('2.3')
2.3
float('hello')
<hr />---------------------------------------------------------------
ValueError                       Traceback (most recent call last)
<ipython-input-3-d0ce8bccc8b2> in <module>()
<hr />-> 1 float('hi')
ValueError: could not convert string to float: 'hello'
Вступ до функцій у Python

Передавання коректних аргументів

def sqrt(x):
    """Returns the square root of a number."""
    return x ** (0.5)
sqrt(4)
2.0
sqrt(10)
3.1622776601683795
Вступ до функцій у Python

Передавання некоректних аргументів

sqrt('hello')
------------------------------------------------------------------
TypeError                        Traceback (most recent call last)
<ipython-input-4-cfb99c64761f> in <module>()
----> 1 sqrt('hello')
<ipython-input-1-939b1a60b413> in sqrt(x)
      1 def sqrt(x):
----> 2     return x**(0.5)
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'float'
Вступ до функцій у Python

Помилки та винятки

  • Винятки — перехоплюються під час виконання

  • Перехоплюйте винятки за допомогою блоку try-except

    • Спочатку виконується код після try

    • Якщо стається виняток, виконується код після except

Вступ до функцій у Python

Помилки та винятки

def sqrt(x):
    """Returns the square root of a number."""
    try:
        return x ** 0.5
    except:
        print('x must be an int or float')

sqrt(4)
2.0
sqrt(10.0)
3.1622776601683795
sqrt('hi')
x must be an int or float
Вступ до функцій у Python

Помилки та винятки

def sqrt(x):
    """Returns the square root of a number."""
    try:
        return x ** 0.5
    except TypeError:
        print('x must be an int or float')

Знімок екрана 2016-08-09 о 10:04:32 AM-4904.png

Вступ до функцій у Python

Помилки та винятки

sqrt(-9)
(1.8369701987210297e-16+3j)
def sqrt(x):
    """Returns the square root of a number."""
    if x < 0:
        raise ValueError('x must be non-negative')
    try:
        return x ** 0.5
    except TypeError:
        print('x must be an int or float')
Вступ до функцій у Python

Помилки та винятки

sqrt(-2)
-----------------------------------------------------------------
ValueError                      Traceback (most recent call last)
<ipython-input-2-4cf32322fa95> in <module>()
----> 1 sqrt(-2)
<ipython-input-1-a7b8126942e3> in sqrt(x)
      1 def sqrt(x):
      2     if x < 0:
----> 3         raise ValueError('x must be non-negative')
      4     try:
      5         return x**(0.5)
ValueError: x must be non-negative
Вступ до функцій у Python

Давайте потренуємось!

Вступ до функцій у Python

Preparing Video For Download...