Как перенести код с помощью Six Module, который будет совместим с версиями python2 и python3

Задайте функцию завершения для cdp. Условно функция называется _cdp. Вы можете определить его в своем .zshrcи явно назначить с помощью compdef.

_cdp () {
  … # code goes here
}
compdef _cdp cdp

В качестве альтернативы поместите код завершения в файл в вашем $fpathс именем _cdpс директивой автозагрузки завершения .

#compdef cdp
… # code goes here

Для заполнения каталогов используйте_files -/. Чтобы завершить каталоги относительно другого места из текущего каталога, используйте опцию -W. Поскольку эта функция принимает только один аргумент, завершает только первый аргумент .

_cdp () {
  ((CURRENT == 2)) &&
  _files -/ -W /mnt/c/Users/Mark/PhpstormProjects
}

Вместо этой функции вы можете добавить или не добавить каталог вcdpath.

cdpath+=/mnt/c/Users/Mark/PhpstormProjects

-1
19.11.2020, 08:38
1 ответ

В вашем примере sixиспользуется для двух вещей:

  • reduceбыл удален в Python 3 и заменен на functools.reduce, поэтому sixпредлагает удобный «псевдоним» для него, чтобы вы могли вызывать reduceкак в 2, так и в 3.
  • assertCountEqualявляется частью unittest в Python 3, поэтому sixздесь предоставляет собственную реализацию для Python 2.

Лучшая документация по модулю sixдоступна здесь:https://six.readthedocs.io/

Примечание. :Python 2 объявлен устаревшим, и его не следует использовать для новых проектов. sixпоможет вам написать код, который работает на обеих версиях Python, но если у вас нет веских причин для поддержки Python 2, было бы лучше написать код только для Python 3. Инструмент 2to3 Можете ли вы помочь с преобразованием кода Python 2 в Python 3.

why they have created class for test cases and have written this line class SampleTests(unittest.TestCase): and Inside main, how did they call the class SampleTests

На самом деле это sixне конкретный вопрос, это то, как модуль unittestработает как на Python 2, так и на Python 3, подробности см. в https://docs.python.org/3/library/unittest.html.

Версия TL;DR:unittest.main()автоматически запускает все тестовые примеры в файле, а тестовый пример определяется как функция, имя которой начинается с test_в классе unittest.TestCase.

0
18.03.2021, 22:48

Теги

Похожие вопросы