- Python 3.7+ 🐍
- Кифон 0,2x © ️ (Пока не v1)
- Nim 1.0 👑
Это предназначено для сравнения дружелюбия письма и легкого чтения Анкет Нет теста производительности.
Python 3 к Цифон Cheatsheet, с короткими примерами, так же простым, как позитивный, Потому что я не могу найти чит -лист цинтона в Интернете. Это также добавляет Ним. Он начинается с простых вещей и продолжает к более сложным. Все значения и имена переменных являются примерами значений.
Цифон и NIM являются альтернативами, чтобы сделать Python быстрее (скомпилирован) и безопаснее (сильное статическое набор) Анкет
Небольшие целые числа
- У Python нет типов для средних целых чисел или небольших целых чисел.
Цифон (средние целые числа)
cdef int a a = 1
Ним + Насасывать
var a = 1
Большие целые числа
Питон
a = 100000000
Кифон
cdef longlong a a = 100000000
Ним + Насасывать
var a = 100000000
- NIM необязательно может использовать явное
int8 ()
,int16 ()
,int32 ()
,int64 ()
,int ()
Анкет
Не подписываемые целые числа
- Python не имеет типов для положительных целых чисел и не знаковых целых чисел.
Цифон (без подписных положительных целых чисел)
ctypedef unsigned a a = 1
Ним + Насасывать
var a = Positive(1)
- Ним имеет
Положительный ()
Начиная с1
иЕстественный()
Начиная с0
Анкет - NIM необязательно может использовать явное
uint8 ()
,uint16 ()
,uint32 ()
,uint64 ()
,uint ()
Анкет - Цифон не имеет типов для ненулевых значений.
Строки
Питон
a = "foo"
Кифон
cdef char* a a = "foo"
Ним + Насасывать
var a = "foo"
F-стрит
Питон
a = f"foo {variable} {1 + 2} bar"
- Цифон не имеет типов F-Strings.
Ним + Насасывать
import strformat var a = fmt"foo {variable} {1 + 2} bar"
- NIM нуждается
Импорт Strformat
, они могут быть временем компиляции.
Маленькие поплавки
- Python не имеет типов для небольших поплавок.
Цифон (маленькие поплавки)
cdef double a a = 1.0
Ним + Насасывать
var a = 1.0
Большие поплавки
- Python не имеет типов для средних поплавок.
Цифон (средние поплавки)
cdef long double a a = 1.000001
Ним + Насасывать
var a = 1.000001
Python (большие поплавки)
a = 1.0000000001
Цифон (большие поплавки)
cdef longlong double a a = 1.0000000001
Ним + Насасывать
var a = 1.0000000001
- NIM необязательно может использовать явное
float32 ()
,float64 ()
,float ()
Анкет
Логические
Питон
a = True
Кифон
cdef bint a a = True
Ним + Насасывать
var a = true
- Ним необязательно может использовать псевдоним
на
дляВерно
,OFF
дляЛожный
Анкет
Функции
Питон
def foo(bar: str, baz: bool) -> int: return 1
Кифон
cdef int foo(char bar, bint baz) def foo(bar: str, baz: bool) -> int: return 1
Ним + Насасывать
proc foo(bar: string, baz: bool): int = return 1
- Ним необязательно может использовать
Авто
Для возврата типа это сделает вывод типа возврата. - Ним необязательно может использовать
любой
Для типа аргумента он выводит тип аргумента. - На NIM -аргументы функции неизбежен по умолчанию.
- Ним необязательно может использовать
Func
вместоProc
для чисто функциональных функциональных программирования (без побочных эффектов).
Методы
Питон
def foo(self, bar: str, baz: bool) -> int: return 1
Кифон
cdef int foo(self, char bar, bint baz) def foo(self, bar: str, baz: bool) -> int: return 1
Ним + Насасывать
proc foo(self: ObjectHere, bar: string, baz: bool): int = return 1
Objecthere
добавлен для ясности.
Вставленные функции
- Python не имеет встроенных функций.
Кифон
cdef inline int foo(char bar, bint baz) def foo(bar: str, baz: bool) -> int: return 1
- Цифон добавляет
встроенный
наcdef
Чтобы внедрить функцию.
Ним + Насасывать
proc foo(bar: string, baz: bool): int {.inline.} = return 1
- Ним добавляет
{.в линию.}
Прагма, чтобы внедрить функцию.
Лямбдас
Питон
from typing import Callable variable: Callable[[int, int], int] = lambda var1, var2: var1 + var2
Ним + Насасывать
( proc (var1, var2: int): int = var1 + var2 )
- Python Вы вынуждены поместить его на переменную для аннотаций типа, анонимные функции NIM сами по себе печатаются.
- Лэмбдам Python не поддерживаются на цинтоне.
- Синтаксис Python Lambda сильно отличается от функции.
- Анонимные функции NIM – это просто функции без имени.
- NIM анонимные функции необязательно могут быть
Func
для чисто функциональных функциональных программирования (без побочных эффектов). - Паренс добавлен для ясности.
Классы
Питон
class MyObject(object): """ Documentation Here, plain-text by default """ pass
Ним + Насасывать
type MyObject = object ## Documentation Here, **MarkDown** or *ReSTructuredText*
Комментарии и Docstrings
Питон
# This is a comment """ This is a DocString, plain-text by default """
Кифон
# This is a comment """ This is a DocString, plain-text by default """
Ним + Насасывать
# This is a comment ## This is a Documentation Comment, **MarkDown** or *ReSTructuredText*
- Nim может само по себе генерировать документацию HTML, Latex, JSON, не требуется сторонний инструмент.
- НИМПИ Размещает комментарии к документации о
__doc__
как и ожидалось.
Json
Питон
import json variable = json.loads("""{ "key": "value", "other": true } """)
- Цифон не имеет типов JSON.
Ним + Насасывать
import json var variable = %*{ "key": "value", "other": true }
- NIM использует буквальный JSON AS-I-IS непосредственно в коде, а не многострочную строку.
Подражание
- У Python нет типов субстанции.
- Цифон не имеет типов субстанции.
Ним + Насасывать
var subrange_integer: range[1..3] = 2 var subrange_float: range[1.0..3.0] = 2.5 var subrange_negative_integer: range[-3..-1] = -2 var subrange_negative_float: range[-3.0..-1.0] = -2.5
subrange_integer
Только берет значения из1
к3
Анкетsubrange_float
Только берет значения из1.0
к3.0
Анкетsubrange_negative_integer
Только берет значения из-3
к-1
.subrange_negative_float
Только берет значения из-3.0
к-1.0
.
Статические постоянные
- У Python нет статических констант (не компилируется).
- Цифон не имеет статических постоянных (или рекомендуется не использовать их?).
Ним + Насасывать
const static_constant = 2 + 2
static_constant
является неизменным, предварительно компиляционным предварительным значением.
Непомотники
- Python не имеет неподвижных переменных времени выполнения.
- Цифон не имеет неизменных переменных времени выполнения.
Ним + Насасывать
const foo = "Compile-Time Immutable Constant" let bar = "Run-Time Immutable Variable" var baz = "Run-Time Mutable Variable"
Выполнение функции компиляции
- Python не имеет выполнения функции с компиляцией (не может компилировать).
- Цифон не имеет выполнения функции компиляции.
Ним + Насасывать
let compile_time_sum = static(1 + 2) static: assert 4 > 2, "Compile-Time Assert" const compile_time_config = static_read("config.ini")
- Все, что вы положили внутри
Статический:
илиstatic ()
будет запущен во время компиляции.
Разное
Файл Читать записи
Python/Cython
with open("file.txt", "r") as infile: content = infile.read() with open("file.txt", "w") as outfile: outfile.write("some data")
Ним
var content = read_file("file.txt") write_file("file.txt", "some data")
- Cython, даже если его скомпилирован не может читать файлы во время компиляции, но nim
static_read ()
могу.
Ним
const content = static_read("file.txt")
- Nim
static_read ()
это время компиляцииread_file ()
Таким образом, версия Cython-время выполнения, а версия NIM-время компиляции.
Модуль самоопределение
Python/Cython
if __name__ in "__main__":
Ним
when is_main_module:
- Nim
Когда
это время компиляцииЕсли
, так Версия Cython-время выполнения, а версия NIM-время компиляции.
Сообщения справки времени компиляции
- У Cython нет способа печатать сообщения справки времени компиляции для пользователей.
Ним
{.hint: "This is a Hint, printed at Compile-Time, with colors too" .} {.warning: "Warning Pragma, is Compile-Time, produces no extra code" .}
- Узнайте NIM сегодня.
- Узнайте цифон.
- Играйте с ним на песочнице прямо из браузера.
- Учебник из цинтона.
- Скажи Привет на мостовом Заклинание , Матрица , Телеграмма , IRC , Раздор Анкет
👑
Оригинал: “https://dev.to/juancarlospaco/python-cython-nim-cheatsheet-hjj”