Несколько вопросов, которые помогут составить общее впечатление о знании языка, к примеру, на собеседовании
Чем отличается import feathers от from feathers import ostrich?
import загружает модуль в собственную область имен:
from загружает импортируемый элемент в текущую область имен
Разница между a = [1, 2] и b = (1, 2)
b — немодифицируемый кортеж
Получить последний элемент массива
b[-1] if b else None
Получить часть строки
«I am string»[0:10]
«file.ext»[-3:]
Чем отличается запись
от
Вторая функция принимает на вход именованные аргументы:
def a(*args)
print args
>> a(1,2)
(1, 2)
def a(**args)
print args
>> a(one = 1, two = 2)
{'one': 1, 'two': 2}
Разница между __new__ и __init__
В __init__ объект уже создан, __new__ создает его сам, используя родительский конструктор
Поменять значения двух переменных
a,b = b,a
Что такое «Ромбическое наследование» и как это решается в питоне?
«Ромбическое наследование» это когда класс наследуется от нескольких классов-посредников, которые в свою очередь наследуются от одного класса. Если метод общего предка был переопределён в посредниках, неизвестно, какую реализацию метода должен наследовать общий потомок. В питоне для решения этой проблемы используется алгоритм C3 линеаризации
Что такое метакласс?
Метакласс — это класс, экземпляры которого суть классы.
Как объявить статический метод?
@staticmethod
def a():
pass
Чем отличается import feathers от from feathers import ostrich?
import загружает модуль в собственную область имен:
import feathers
duster = feathers.ostrich("South Africa")
from загружает импортируемый элемент в текущую область имен
from feathers import ostrich
duster = ostrich("South Africa")
Разница между a = [1, 2] и b = (1, 2)
b — немодифицируемый кортеж
Получить последний элемент массива
b[-1] if b else None
Получить часть строки
«I am string»[0:10]
«file.ext»[-3:]
Чем отличается запись
def a(*args)
print args
от
def a(**args)
print args
Вторая функция принимает на вход именованные аргументы:
def a(*args)
print args
>> a(1,2)
(1, 2)
def a(**args)
print args
>> a(one = 1, two = 2)
{'one': 1, 'two': 2}
Разница между __new__ и __init__
В __init__ объект уже создан, __new__ создает его сам, используя родительский конструктор
Поменять значения двух переменных
a,b = b,a
Что такое «Ромбическое наследование» и как это решается в питоне?
«Ромбическое наследование» это когда класс наследуется от нескольких классов-посредников, которые в свою очередь наследуются от одного класса. Если метод общего предка был переопределён в посредниках, неизвестно, какую реализацию метода должен наследовать общий потомок. В питоне для решения этой проблемы используется алгоритм C3 линеаризации
Что такое метакласс?
Метакласс — это класс, экземпляры которого суть классы.
Как объявить статический метод?
@staticmethod
def a():
pass