Вы должны быть уверены в пути питона. Так что используйте это
import sys
print(sys.path)
Для Python36 путь следующий:
C:\Users\user\AppData\Local\Programs\Python\Python36
В Python 3
В разделе «Команды Python» найдите строку «Компиляция». Введите следующее в поле «Команда». Убедитесь, что вы правильно сделали пробелы. У вас должно быть 'C: \ Python34 \ python', затем пробел и остальная часть команды. Если у вас есть «Python 34» с пробелом между Python и 34, Geany не сможет запустить ваш код. Также убедитесь, что ваша заглавная буква соответствует тому, что вы видите здесь.
C:\Python34\python -m py_compile "%f"
или используйте следующий путь
C:\Users\user\AppData\Local\Programs\Python\Python36 -m py_compile "%f"
В разделе «Выполнить команды» найдите строку «Выполнить». Введите следующее в поле «Команда», снова обращая внимание на пробелы.
C:\Python34\python "%f"
или C:\Users\user\AppData\Local\Programs\Python\Python36 "%f"
Проверьте свои настройки, снова запустив hello.py.
Python 2
Если вы установили Python 2.7 вместо Python 3, вам, вероятно, понадобятся следующие команды:
C:\Python27\python -m py_compile "%f"
или path of your python -m py_compile "%f"
и
[ 1111] или path of your python "%f"
См. Эту ссылку для получения дополнительной информации: http://introtopython.org/programming_environment_windows.html
Это - великое (и нормальный) использование. Необходимо быть осторожными, тем не менее, что, например, тип, который Вы выбираете, соответствует тем же критериям со знаком/неподписанным, или что они так же отвечают на операторы. Затем было бы легче изменить тип впоследствии.
Другая опция состоит в том, чтобы использовать шаблоны, чтобы не фиксировать тип до момента, который Вы компилируете. Класс, который определяется как:
template <typename CharType>
class Whatever
{
CharType aChar;
...
};
может работать с любым символьным типом, который Вы выбираете, в то время как он отвечает на все операторы таким же образом.
Другое преимущество определений типов состоит в том, что, если используется мудро, они могут увеличить удобочитаемость. Как действительно немой пример, Метр и Градус могут оба быть, удваивается, но требуется дифференцироваться между ними. Используя определение типа onc быстрое и легкое решение совершить более видимые ошибки.
Примечание: больше надежного решения вышеупомянутого примера состояло бы в том, чтобы создать различные типы для метра и градуса. Таким образом компилятор может осуществить вещи сам. Это требует небольшого количества работы, которая не всегда окупается, как бы то ни было. Используя определения типов быстрый и простой способ совершить видимые ошибки, как описано в статье, связанной выше.
Да, это - идеальное использование для определения типа, по крайней мере, в C.
Для C++ можно утверждать, что шаблоны являются лучшей идеей (как Diego Sevilla предположил), но у них есть свои недостатки. (Дополнительная работа, если все с помощью типа данных уже не перенесено в несколько классов, более медленное время компиляции и более сложная структура исходного файла, и т.д.),
Также имеет смысл комбинировать два подхода, то есть, давать имя определения типа к шаблонному параметру.
Обратите внимание, что, поскольку Вы отправляете данные по сети, символ и другие целые типы не могут быть взаимозаменяемыми (например, из-за порядка байтов). В этом случае использование шаблонного класса со специализированными функциями могло бы иметь больше смысла. (отправьте <символ> отправляет байт, отправьте <короткие> преобразования он в сетевой порядок байтов сначала),
Еще одно решение состояло бы в том, чтобы создать класс "BufferElementType" со вспомогательными методами (convertToNetworkOrderBytes ()), но я буду держать пари, что это было бы излишеством для Вас.