295.05K
Категория: ПрограммированиеПрограммирование

Основы Python. Составные типы данных. Функции. Область видимости переменных

1.

План занятия
"Cоставные" типы данных
Сложность операций с "составными" типами
данных
Функции
Область видимости переменных
1

2.

Составные типы
данных
2

3.

Составной = из
нескольких частей
3

4.

Кортеж
Представляет собой набор неизменяемых
значений
(1, 2)
(1, 2, 3)
('a', 'b', 'c', 'd', 'e', 'f')
4

5.

Практика
Файл "types/tuples.py"
5

6.

Список
Представляет собой изменяемый набор
значений
[1, 2, 1, 3]
[True, False]
['person', 'manager', 'student']
6

7.

Практика
Файл "types/lists.py"
7

8.

Мы можем добавить новые
значения в список.
А в кортеж?
numbers = [1, 2, 3]
numbers.append(4)
print(numbers) # [1, 2, 3, 4]
8

9.

В кортеж - нельзя
ничего добавить!
9

10.

Можно ли изменить
объект?
Если да, то он изменяемый
Если нет, то он неизменяемый
10

11.

Практика
Файл "tuple_vs_list.py"
11

12.

Множество
Представляет собой изменяемый набор
уникальных значений
{1, 2}
{'my', 'unique', 'words'}
{'a', False, None, 1}
12

13.

Практика
Файл "types/sets.py"
13

14.

Словарь
Представляет собой набор пар
{"ключ": "значение"}
{}
{'a': 1, 'b': 2, 'c': 3}
{'name': 'Ivan', 'age': 25, 'working': True}
14

15.

Практика
Файл "types/dicts.py"
15

16.

Присваивание никогда не
копирует данные
first = [1, 2]
second = first
first.append(3)
print(first) # [1, 2, 3]
print(second) # [1, 2, 3]
16

17.

Какова сложность
операций?
https://wiki.python.org/moin/TimeComplexity
17

18.

Каждый тип данных хорош
в чем-то своем
В tuple быстро брать значения по индексу
В list быстро добавлять новое, брать значения
по индексу
В set быстро искать значения, делать операции
над множествами
В dict быстро брать значения по ключу, искать
ключи, добавлять новые
18

19.

Промежуточные итоги
Неизменяемые типы (immutable):
• Простые типы: int, float, complex, bool, str, None
Кортежи: tuple
Изменяемые типы (mutable):
• Списки: list
Множества: set
Словари: dict
19

20.

Функции
20

21.

Вызов функции
Уже знакомая для нас конструкция:
len('abc')
print('2 + 2 = ', 4)
input('How are you?')
21

22.

Определение
функции
22

23.

Определение функции
def sum_two_numbers(number1, number2):
...
Где:
def - ключевое слово для объявления функции
sum_two_numbers - имя функции
number1, number2 - входные параметры
23

24.

Определение функции
def sum_two_numbers(input_var1, input_var2):
return input_var1 + input_var2
Где:
return - ключевое слово, чтобы вернуть значение
returns input_var1 + input_var2 - тело функции
24

25.

Определение и вызов
функции неразрывно
связаны!
25

26.

Практика
Файл "functions/definition.py"
26

27.

Функция может
принимать
Нулевое количество аргументов: print() #
Позиционные аргументы: print(1, 2) # 1 2
Именованные аргументы: print(1, 2, sep=',') # 1,2
27

28.

Функция может
принимать
Любое количество позиционных аргументов:
print(1, 2, 3, 4, 5, 6, 7, 8, 9, ...)
Любое количество именованных аргументов:
dict(name='Ivan', age=25, working=True)
28

29.

Практика
Файл "functions/args_and_kwargs.py"
29

30.

Области видимости
30

31.

Области видимости
LANGUAGE_NAME = 'Python'
def print_language_name():
heart = '<3'
print('I am learning', LANGUAGE_NAME, heart)
print(LANGUAGE_NAME, 'is cool!') # no heart ;(
31

32.

Области видимости
нужны нам, чтобы
прятать лишнее!
32

33.

Практика
Файл "scopes.py"
33

34.

Выводы
Узнали про "составные" типы данных
Поняли, что разные операции могут затрачивать
разное количество времени работы. Нужно с
умом выбирать нужный тип данных!
Научились вызывать и определять функции
Поняли, как прятать лишние переменные
34
English     Русский Правила