В чем разница между модулем и пакетом в Python?
Ответ
Каждый программный файл Python представляет собой модуль, который импортирует другие модули как объекты. Таким образом, модуль — это способ структурирования вашей программы. Папка с программой на Python называется пакетом модулей.
↪️ Читать дальше
@python_job_interview
Ответ
Каждый программный файл Python представляет собой модуль, который импортирует другие модули как объекты. Таким образом, модуль — это способ структурирования вашей программы. Папка с программой на Python называется пакетом модулей.
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Как изменить тип данных списка?
Чтобы преобразовать список в кортеж, мы используем функцию tuple().
Чтобы превратить его в множество — функцию set().
Для преобразования в словарь — dict().
Для превращения в строку — join().
@python_job_interview
Чтобы преобразовать список в кортеж, мы используем функцию tuple().
Чтобы превратить его в множество — функцию set().
Для преобразования в словарь — dict().
Для превращения в строку — join().
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Ответ
В Python функция help() используется для отображения документации по модулям, классам, функциям, ключевым словам и так далее. Если help() не получает параметров, она запускает интерактивную справочную утилиту на консоли.
Функция dir() возвращает допустимый список атрибутов и методов объекта, к которому она вызывается. Поскольку функция предназначена для получения наиболее релевантных данных (вместо отображения полной информации), она ведет себя по-разному с разными объектами:
- Для модулей/библиотек функция dir() возвращает список всех атрибутов, содержащихся в этом модуле.
- Для объектов класса dir() вернет список всех допустимых атрибутов и базовых атрибутов.
- Когда ей не передаются никакие параметры, функция dir() возвращает список атрибутов в текущей области видимости.
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой метод использовался до оператора «in» для проверки наличия ключа в словаре?
Ответ
Метод
Ниже приводится синтаксис для метода has_key():
Параметры
key – это ключ, который нужно искать в словаре.
Возвращаемое значение
Этот метод возвращает true, если данный ключ доступен в словаре, иначе он возвращает false.
Пример
В следующем примере показано использование метода has_key().
Когда мы запускаем указанную выше программу, она дает следующий результат:
@python_job_interview
Ответ
Метод
has_key().
Ниже приводится синтаксис для метода has_key():
dict.has_key(key)
Параметры
key – это ключ, который нужно искать в словаре.
Возвращаемое значение
Этот метод возвращает true, если данный ключ доступен в словаре, иначе он возвращает false.
Пример
В следующем примере показано использование метода has_key().
#!/usr/bin/python3
dict = {'Name': 'AndreyEx', 'Age': 18}
print ("Значение : %s" % dict.has_key('Age'))
print ("Значение : %s" % dict.has_key('Sex'))
Когда мы запускаем указанную выше программу, она дает следующий результат:
Значение : True
Значение : False
@python_job_interview
Поле класса с одним лидирующим подчеркиванием говорит о том, что параметр используется только внутри класса. При этом он доступен для обращения извне.
class Foo(object):
def __init__(self):
self._bar = 42
Foo()._bar
>>> 42
Современные IDE вроде PyCharm подсвечивают обращение к полю с подчеркиванием, но ошибки в процессе исполнения не будет.
Поля с двойным подчеркиванием доступны внутри класса, но недоступны извне. Это достигается хитрым приемом: интерпретатор назначает таким полям имена вида _<ClassName>__<fieldName>. Зная это правило, можно получить значение скрытого поля вне класса, но это смотрится очень уродливо.
class Foo(object):
def __init__(self):
self.__bar = 42
Foo().__bar
>>> AttributeError: 'Foo' object has no attribute '__bar'
Foo()._Foo__bar
>>> 42
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Все знают, что сегодня питон в моде. Но истинное принятие новой технологии подразумевает понимание ее недостатков. Что вы можете сказать по этому поводу?
Ответ
Какие в питоне есть ограничения:
- интерпретируемая природа питона снижает скорость исполнения программы
- его не выгодно использовать для мобильных устройств и браузеров
- будучи языком с динамической типизацией данных, он использует утиную типизацию; в связи с этим появляются ошибки исполнения (runtime errors);
- в нем слабо развиты возможности доступа к базам данных; поэтому питон не идеальный вариант для приложений с очень большими базами данных;
- низкие требования на входе, то есть свои силы в питоне может попробовать каждый; это иногда снижает качество кода;
- у питона индивидуально выраженный стиль.
@python_job_interview
Ответ
Какие в питоне есть ограничения:
- интерпретируемая природа питона снижает скорость исполнения программы
- его не выгодно использовать для мобильных устройств и браузеров
- будучи языком с динамической типизацией данных, он использует утиную типизацию; в связи с этим появляются ошибки исполнения (runtime errors);
- в нем слабо развиты возможности доступа к базам данных; поэтому питон не идеальный вариант для приложений с очень большими базами данных;
- низкие требования на входе, то есть свои силы в питоне может попробовать каждый; это иногда снижает качество кода;
- у питона индивидуально выраженный стиль.
@python_job_interview
Как в питоне узнать, в какой мы сейчас директории?
Ответ
@python_job_interview
Ответ
>>> import os
>>> os.getcwd()
"C:\\Users\\lifei\\AppData\\Local\\Programs\\Python\\Python36-32"
@python_job_interview
🖥 Напишите функцию, которая будет принимать два списка чисел (вложенный и обычный) и проверять, все ли числа в подсписках вложенного принадлежат множеству чисел второго, обычного списка
Примечания:
1) пустой список считаем валидным подмножеством множества чисел второго списка
2) в каждом отдельном списке (как во вложенных, так и во втором, обычном списке) числа будут уникальными.
@python_job_interview
Примечания:
1) пустой список считаем валидным подмножеством множества чисел второго списка
2) в каждом отдельном списке (как во вложенных, так и во втором, обычном списке) числа будут уникальными.
@python_job_interview
Какой результат выводит данный код:
Ответ
Возможный, но неверный ответ: ([10], [123], [‘a’])
В функции есть аргумент list=[], который не запускается в нулевом значении при каждом вызове этой функции. Когда мы первый раз определяем функцию, она создает новый список. Затем, каждый раз, когда мы вызываем данную функцию без аргумента-списка, она использует один и тот же список. Питон исполняет выражения, которые имеют нулевые значения, при определении функции, а не при вызове функции.
@python_job_interview
>>> def extendList(val, list=[]):
list.append(val)
return list
>>> list1 = extendList(10)
>>> list2 = extendList(123,[])
>>> list3 = extendList('a')
>>> list1, list2, list3
[10, ‘a’], [123], [10, ‘a’]
Ответ
Возможный, но неверный ответ: ([10], [123], [‘a’])
В функции есть аргумент list=[], который не запускается в нулевом значении при каждом вызове этой функции. Когда мы первый раз определяем функцию, она создает новый список. Затем, каждый раз, когда мы вызываем данную функцию без аргумента-списка, она использует один и тот же список. Питон исполняет выражения, которые имеют нулевые значения, при определении функции, а не при вызове функции.
@python_job_interview
Как работать с числами, которые не входят в десятичную систему счисления?
Ответ
В питоне можно вводить бинарные, восьмеричные и шестнадцатеричные числа.
Бинарные. Это числа, составленные из 0 и 1. Для ввода в бинарном формате, используется префикс 0b или 0B:
Число можно преобразовать в бинарный формат с помощью функции bin():
Восьмеричные числа могут состоять из цифр от 0 до 7, также используется префикс 0o или 0O:
Шестнадцатеричные числа могут состоять из цифр от 0 до 15, также используется префикс 0x или 0X:
@python_job_interview
Ответ
В питоне можно вводить бинарные, восьмеричные и шестнадцатеричные числа.
Бинарные. Это числа, составленные из 0 и 1. Для ввода в бинарном формате, используется префикс 0b или 0B:
>>> int(0b1010)
10
Число можно преобразовать в бинарный формат с помощью функции bin():
>>> bin(0xf)
‘0b1111’
Восьмеричные числа могут состоять из цифр от 0 до 7, также используется префикс 0o или 0O:
>>> oct(8)
‘0o10’
Шестнадцатеричные числа могут состоять из цифр от 0 до 15, также используется префикс 0x или 0X:
>>> hex(15)
‘0xf’
@python_job_interview
Что такое операторы присвоения в питоне?
Ответ
Все арифметические операторы можно комбинировать с символом присвоения.
@python_job_interview
Ответ
Все арифметические операторы можно комбинировать с символом присвоения.
>>> a = 7
>>> a += 1
>>> a
8
>>> a -= 1
>>> a
7
>>> a *= 2
>>> a
14
>>> a /= 2
>>> a
7.0
>>> a **= 2
>>> a
49.0
>>> a // =3
>>> a
16.0
>>> a %= 4
>>> a
0.0
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Собеседование Python developer Сторожук Сергей
Сергей ищет работу. Выглядит хорошо. Я бы его взял после тестового. Если у вас есть вакансия джуна или стажёра, пришите мне в личку тележки @andpronin -- отдам контакт
Подписка, колокольчик, лаки и комментраии мотивируют продолжать.
Можно кинуть денежку…
Подписка, колокольчик, лаки и комментраии мотивируют продолжать.
Можно кинуть денежку…
Сколько аргументов может принять range()
Ответ
От одного до трех:
@python_job_interview
Ответ
От одного до трех:
>>> list(range(5))
[0, 1, 2, 3, 4]
>>> list(range(-5))
[]
>>> list(range(2, 7))
[2, 3, 4, 5, 6]
>>> list(range(-3, 4))
[-3, -2, -1, 0, 1, 2, 3]
>>> list(range(2, 9, 2))
[2, 4, 6, 8]
>>> list(range(9, 2, -1))
[9, 8, 7, 6, 5, 4, 3]
@python_job_interview
Что плохого в следующем коде?
Ответ:
В Python нет объявлений переменных, поэтому он должен сам определить их область действия. Если внутри функции имеется обращение к переменной, то она считается локальной. Переменная count выше является глобальной, поэтому код выбрасывает ошибку.
@python_job_interview
Ответ:
@python_job_interview
Расскажите, какой в питоне механизм передачи параметров
Ответ
В питоне используется передача параметров по ссылке. Если изменить параметр внутри функции, то это отразится на выводе функции. Однако, если использовать в качестве параметров литералы (строки, числа, кортежа), то они передаются по значению (потому что они не изменяемые).
Рассмотрим следующий пример:
Функция вызывается, но изменения оказанные на переменную a больше не действую после возврата из функции, ведь a всё ещё равна 3. Поэтому может показаться, что используется передача по значению, но это не так. Python не копирует значения параметров при вызове функции. Если мы рассмотрим другую функцию:
— то мы четко видим, что элемент исходного списка l был изменен после вызова функции.
При передачи по ссылке в момент вызова функции передаются адреса переменных, причем с адресами работают так, как если бы это была обычная переменная (поэтому не нужно дополнительно проводить разыменование, как это делается в Си). Такая модель подразумевает, что исходные переменные и параметры функции — это одни и те же объекты. Изменяя параметры в теле функции, вы изменяете их и в вызывающем контексте.
@python_job_interview
Ответ
В питоне используется передача параметров по ссылке. Если изменить параметр внутри функции, то это отразится на выводе функции. Однако, если использовать в качестве параметров литералы (строки, числа, кортежа), то они передаются по значению (потому что они не изменяемые).
Рассмотрим следующий пример:
def foo(x):
x = 4
a = 3
foo(a)
print(a)
# 3
Функция вызывается, но изменения оказанные на переменную a больше не действую после возврата из функции, ведь a всё ещё равна 3. Поэтому может показаться, что используется передача по значению, но это не так. Python не копирует значения параметров при вызове функции. Если мы рассмотрим другую функцию:
def clearly_not_pass_by_value(my_list):
my_list[0] = 42
l = [1, 2, 3]
clearly_not_pass_by_value(l)
print(l)
# [42, 2, 3]
— то мы четко видим, что элемент исходного списка l был изменен после вызова функции.
При передачи по ссылке в момент вызова функции передаются адреса переменных, причем с адресами работают так, как если бы это была обычная переменная (поэтому не нужно дополнительно проводить разыменование, как это делается в Си). Такая модель подразумевает, что исходные переменные и параметры функции — это одни и те же объекты. Изменяя параметры в теле функции, вы изменяете их и в вызывающем контексте.
@python_job_interview
Ответ
Он следует парадигме объектно-ориентированного программирования, которая построена вокруг классов (classes) и их экземпляров (instances). Это позволяет реализовать следующие функции:
- сокрытие внутренней структуры данных
- абстракция
- наследование
- полиморфизм (способность выбирать правильный метод в зависимости от типа данных)
- ограничение доступа к данным
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Какие есть типы объектов в питоне?
Ответ
В питоне поддерживаются изменяемые (mutable) и не изменяемые (immutable) типы объектов.
Не изменяемые не позволяют изменять свое содержание. Примеры: кортежи, булевы, строки, числа. Итерация по ним выполняется быстрее.
Изменяемые позволяют изменять свое содержание. Примеры: списки, множества и словари. Итерация по ним выполняется медленнее.
@python_job_interview
Ответ
В питоне поддерживаются изменяемые (mutable) и не изменяемые (immutable) типы объектов.
Не изменяемые не позволяют изменять свое содержание. Примеры: кортежи, булевы, строки, числа. Итерация по ним выполняется быстрее.
Изменяемые позволяют изменять свое содержание. Примеры: списки, множества и словари. Итерация по ним выполняется медленнее.
@python_job_interview
Ответ
Обычно программа в питоне начинает исполнение с первой строки. После нее программа однократно исполняет каждое предложение. Когда будет исполнено последнее предложение, программа прекращается. Также контроль последовательности помогает усложнить обычный порядок исполнения программы.
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Ответ:
Получается, что на экране мы увидим:
0
2
4
6
8
Дальнейший разбор предполагает, что вам знакомо замыкание (closure) при использовании вложенных функций (nested functions).
Свои коррективы в наивное объяснение выше вносит позднее связывание. Согласно ему, значение переменной из замыкания (это переменная i) вычисляется в тот момент, когда вызывается внутренняя функция (наши list_lamba_f).
Получается, что значение i в list_lamba_f вычисляется в момент вызова multiplier(2) в пятой строчке. Но в этот момент create_multipliers уже отработала целиком. и значение i — это 4. То есть для всех list_lamba_f значение i равно 4.
Итак, ответ:
8
8
8
8
8.
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Ответ
Объект списка в CPython представлен нижеследующей структурой в C. ob_item — это список указателей на элементы списка, allocated — количество выделенной памяти.
typedef struct {
PyObject_VAR_HEAD
PyObject **ob_item;
Py_ssize_t allocated;
} PyListObject;
Инициализация списка
Давайте посмотрим, что происходит при создании пустого списка, к примеру l = []. Вызывается функция PyList_New(0):
/*
size - размер списка
*/
PyList_New(Py_ssize_t size)
{
// Вычисляется реальный размер необходимой памяти
nbytes = size * sizeof(PyObject *);
// Инициализируется ob_item
if (size <= 0)
op->ob_item = NULL;
else {
op->ob_item = (PyObject **) PyMem_MALLOC(nbytes);
memset(op->ob_item, 0, nbytes);
}
// Сохраняется количество выделенных ячеек
op->allocated = size;
return (PyObject *) op;
}
Важно понимать разницу между выделенной памятью и размером списка. Размер списка — это тоже самое, что и len(l). allocated — это количество выделенной памяти, которое зачастую может быть больше размера списка. Это делается для предотвращения вызовов realloc при каждом добавлении элементов.
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM