Самые популярные вопросы на собеседовании: «В чем разница между списком и кортежем?»
С этого дня решил попробовать новую рубрику — вопросы с собеседований. В ней буду рассказывать о популярных вопросах и ответах на них. Такая минимальная посильная нагрузка, которая со временем поможет увереннее чувствовать себя в самый важный момент перед будущим тимлидом :)
И начнём с одного из самых простых, но самых частых вопросов с собеседований по Python/Data science. Его важно знать даже просто для себя.
Вот несколько отличительных черт кортежей и списков:
— Список можно изменить после создания. Кортеж — нельзя.
— Список упорядочен. Он представляет собой упорядоченные последовательности объектов часто одного и того же типа. Например, все имена пользователей упорядочены по дате создания:
— У кортежа есть структура. В каждом индексе могут сосуществовать различные типы данных. Например, такая запись базы данных в памяти:
#собеседование
С этого дня решил попробовать новую рубрику — вопросы с собеседований. В ней буду рассказывать о популярных вопросах и ответах на них. Такая минимальная посильная нагрузка, которая со временем поможет увереннее чувствовать себя в самый важный момент перед будущим тимлидом :)
И начнём с одного из самых простых, но самых частых вопросов с собеседований по Python/Data science. Его важно знать даже просто для себя.
Вот несколько отличительных черт кортежей и списков:
— Список можно изменить после создания. Кортеж — нельзя.
— Список упорядочен. Он представляет собой упорядоченные последовательности объектов часто одного и того же типа. Например, все имена пользователей упорядочены по дате создания:
["Seth", "Ema", "Eli"]
.— У кортежа есть структура. В каждом индексе могут сосуществовать различные типы данных. Например, такая запись базы данных в памяти:
(2, "Ema", "2020–04–16") # id, name, created_at
.#собеседование
👍62👎9
Самые популярные вопросы на собеседовании: «Как выполняется обработка исключений в Python?»
Это база, но всё равно новички часто плавают в исключениях или используют их не в полной мере. Давайте разбираться, как делать это правильно.
Для обработки исключений Python предоставляет конструкцию из трех слов:
Синтаксис выглядит примерно так:
Например, код:
Выдаст:
Здесь блок
#собеседование
Это база, но всё равно новички часто плавают в исключениях или используют их не в полной мере. Давайте разбираться, как делать это правильно.
Для обработки исключений Python предоставляет конструкцию из трех слов:
try
, except
и finally
.Синтаксис выглядит примерно так:
try:
# пробуем это
except:
# если try не сработал, пробуем это
finally:
# в любом случае делаем это
Например, код:
try:
val = 1 + 'A'
except:
val = 10
finally:
print('complete')
print(val)
Выдаст:
#=> complete
#=> 10
Здесь блок
try
терпит неудачу, ведь мы не можем складывать целые числа со строками. Блок except
устанавливает val = 10
, а затем блок finally
выводит complete
.#собеседование
🔥23👍11💩2
Самые популярные вопросы на собеседовании: «В чем разница между is и ==?»
Это вопрос с подвохом, и начинающие разработчики часто не видят разницы. И… привет, баги! Так что давайте разбираться, в чём же разница.
Если просто, то
Если проверим равенство, то все объекты будут равны:
А вот если мы проверим их идентичность, то получается следующее:
Несмотря на одинаковое содержимое, сами списки представлены разными объектами в памяти, поэтому оператор
Это всё, что нужно знать про
#собеседование
Это вопрос с подвохом, и начинающие разработчики часто не видят разницы. И… привет, баги! Так что давайте разбираться, в чём же разница.
Если просто, то
is
проверяет идентичность, а ==
проверяет равенство. Чтобы лучше понять, создадим 2 списка, а переменной b
присвоим значение списка a
:a = [1,2,3]
b = a
c = [1,2,3]
Если проверим равенство, то все объекты будут равны:
print(a == b) #=> True
print(a == c) #=> True
А вот если мы проверим их идентичность, то получается следующее:
print(a is b) #=> True
print(a is c) #=> False
Несмотря на одинаковое содержимое, сами списки представлены разными объектами в памяти, поэтому оператор
is
для одинаковых списков возвращает False
. Проверить очень просто — у объектов будут разные идентификаторы:print(id(a)) #=> 4369567560
print(id(b)) #=> 4369567560
print(id(c)) #=> 4369567624
Это всё, что нужно знать про
is
и ==
на базовом уровне. Но есть несколько лайфхаков и нюансов, которые помогут использовать эти операторы на полную катушку. О них расскажу чуть позже.#собеседование
👍62🔥2🥰2💯2🐳1
Самые популярные вопросы на собеседовании: « В чем разница между remove, del и pop?»
Тип данных
1.
2.
3.
#собеседование
Тип данных
List
в Python помогает сохранять разные типы данных в определенной связанной последовательности. И есть несколько методов для удаления элементов из списка. Вот в чём их основное различие:1.
remove()
удаляет первое совпадающее значение:li = ['a','b','c','d']
li.remove('b')
print(li)
#=> ['a', 'c', 'd']
2.
del
удаляет элемент по его индексу:li = ['a','b','c','d']
del li[0]
print(li)
#=> ['b', 'c', 'd']
3.
pop()
удаляет элемент по индексу и возвращает этот элемент:li = ['a','b','c','d']
print(li.pop(2))
print(li)
#=> 'c'
#=> ['a', 'b', 'd']
#собеседование
👍54
Самые популярные вопросы на собеседовании: «Что такое декоратор?»
Этот вопрос, пожалуй, встречается на каждом собеседовании. Вообще декораторы — тема большая и как-нибудь обязательно найду хороший материал, чтобы раскрыть её шире. Но а пока давайте базово разберёмся в этом вопросе.
Если вкратце, декоратор позволяет добавить новую функциональность к существующей функции. Это делается так. Функция передаётся декоратору, а он выполняет и существующий и дополнительный код. Для примера напишем декоратор, который записывает в журнал вызовы другой функции.
Напишем функцию декоратора
В качестве аргумента он принимает функцию
Напишем другие функции, к которым позже добавим декоратор:
Теперь добавим декоратор к эти двум функциям:
Теперь легко добавить ведение журнала в любую функцию, которую мы пишем. Достаточно написать перед ней
#собеседование
Этот вопрос, пожалуй, встречается на каждом собеседовании. Вообще декораторы — тема большая и как-нибудь обязательно найду хороший материал, чтобы раскрыть её шире. Но а пока давайте базово разберёмся в этом вопросе.
Если вкратце, декоратор позволяет добавить новую функциональность к существующей функции. Это делается так. Функция передаётся декоратору, а он выполняет и существующий и дополнительный код. Для примера напишем декоратор, который записывает в журнал вызовы другой функции.
Напишем функцию декоратора
В качестве аргумента он принимает функцию
func
. Декоратор определяет функцию log_function_called
, которая вызывает func()
и выполняет код print(f'{func} called.')
. А затем возвращает определенную им функцию:def logging(func):
def log_function_called():
print(f'{func} called.')
func()
return log_function_called
Напишем другие функции, к которым позже добавим декоратор:
def my_name():
print('chris')
def friends_name():
print('naruto')
my_name() #=> chris
friends_name() #=> naruto
Теперь добавим декоратор к эти двум функциям:
@logging
def my_name():
print('chris')
@logging
def friends_name():
print('naruto')
my_name()
#=> <function my_name at 0x10fca5a60> called.
#=> chris
friends_name()
#=> <function friends_name at 0x10fca5f28> called.
#=> naruto
Теперь легко добавить ведение журнала в любую функцию, которую мы пишем. Достаточно написать перед ней
@logging
.#собеседование
👍26👎1🔥1💩1
Самые популярные вопросы на собеседовании: «Как перевести строку в верхний/нижний регистр?»
Это очень простой вопрос, но и на них иногда «спотыкаются», особенно новички. Для ответа на этот вопрос можно использовать строковые методы
#собеседование
Это очень простой вопрос, но и на них иногда «спотыкаются», особенно новички. Для ответа на этот вопрос можно использовать строковые методы
upper()
и lower()
:small_word = 'potatocake'
big_word = 'FISHCAKE'
small_word.upper()
#=> 'POTATOCAKE'
big_word.lower()
#=> 'fishcake'
#собеседование
👍19🔥3👎1👏1