Поток управления

Я считаю, что основной вывод из этого раздела — кратко выделить различные возможные потоки управления.

Вот традиционный оператор if-else:

x = 5
if x % 2 == 0:
    parity = "even"
else:
    parity = "odd"
parity # 'odd'

Автор может время от времени использовать более короткий тройной однострочник if-else, например:

parity = "even" if x % 2 == 0 else "odd"

Автор отмечает, что пока существуют циклы while:

x = 0
while x < 10:
    print(f"{x} is less than 10")
    x += 1

for и in будут использоваться чаще (приведенный ниже код короче и читабельнее):

for x in range(10):
    print(f"{x} is less than 10")

Мы также отметим, что range(x) также увеличивается до x-1.

Наконец, более сложная логика возможна, хотя нам придется вернуться к тому, когда именно более сложная логика используется в контексте науки о данных.

for x in range(10):
    if x == 3:
        continue
    if x == 5:
        break
    print(x)

Правдивость

Логические значения в Python, True и False, имеют заглавную только первую букву. И Python использует None для обозначения несуществующего значения. Мы попробуем обработать исключение ниже:

1 < 2 # True (not TRUE)
1 > 2 # False (not FALSE)
x = 1
try:
    assert x is None
except AssertionError:
    print("There was an AssertionError because x is not 'None'")

Главным выводом для меня является понятие «истина» и «ложь». Первое, что нужно отметить, это то, что все, что после if, подразумевает «истинно», поэтому операторы if можно использовать для проверки, если список, строка или словарь пусты:

x = [1]
y = []
# if x...is true
# Truthy
if x:
    print("Truthy")
else:
    print("Falsy")
# if y...is true    
# Falsy
print("Truthy") if y else print("Falsy")

Вы заметите, что тройная версия немного менее удобочитаема. Вот еще примеры, чтобы понять «правдивость».

## Truthy example
# create a function that returns a string
def some_func():
    return "a string"
# set s to some_func 
s = some_func()
# use if-statement to check truthiness - returns 'a'
if s:
    first_char = s[0]
else:
    first_char = ""
## Falsy example
# another function return empty string
def another_func():
    return ""
# set another_func to y (falsy example)
y = another_func()
# when 'truthy' return second value,
# when 'falsy' return first value
first_character = y and y[0]

Наконец, автор упоминает все и любые функции. Первый возвращает True, когда каждый элемент соответствует действительности; последний возвращает True, когда по крайней мере один элемент верен:

all([True, 1, {3}]) # True
all([True, 1, {}])  # False
any([True, 1, {}])  # True
all([])             # True
any([])             # False

Вы заметите, что оценивается достоверность внутри списка. Таким образом, all([]) предполагает, что в списке нет «ложных» элементов, потому что он пуст, поэтому он оценивается как True.

С другой стороны, any([]) предполагает, что ни один (или хотя бы один) элемент не является «истинным», потому что список пуст, поэтому он оценивается как False.

***

Чтобы узнать больше о науке о данных, машинном обучении, R, Python, SQL и многом другом, найдите меня в Twitter.