Inlinec - Π½ΠΎΠ² Π½Π°Ρ‡ΠΈΠ½ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° C ΠΊΠΎΠ΄ Π² Python скриптовС

ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ inlinec ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΅ Π½ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π° Π²Π³Ρ€Π°Π΄Π΅Π½Π° интСграция Π½Π° C ΠΊΠΎΠ΄ Π² Python скриптовС. C Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ сС Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π² ΡΡŠΡ‰ΠΈΡ Ρ„Π°ΠΉΠ» с ΠΊΠΎΠ΄ Π½Π° Python, ΠΏΠΎΠ΄Ρ‡Π΅Ρ€Ρ‚Π°Π½ΠΈ ΠΎΡ‚ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° β€ž@inlinecβ€œ. Π‘ΠΊΡ€ΠΈΠΏΡ‚ΡŠΡ‚ Π·Π° ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ сС изпълнява Ρ‚Π°ΠΊΡŠΠ², ΠΊΠ°ΠΊΡŠΠ²Ρ‚ΠΎ Π΅, ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π½Π° Python ΠΈ сС Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°, прСдоставСн Π² Python ΠΊΠΎΠ΄Π΅Ρ†ΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ възмоТно ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° парсСр Π·Π° трансформиранС Π½Π° скрипта, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° (ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŠΡ‚ ΠΊΠΎΠ΄Π΅Ρ†ΠΈ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° транскодиранС Π½Π° ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π΅Π½ тСкст, Π½ΠΎ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π²ΠΈ позволява Π΄Π° трансформиратС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° скрипта).

ΠΠ½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ ΠΊΠ°Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ» (β€žfrom inlinec import inlinecβ€œ), ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½Π°Ρ‚Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ ΠΏΡ€Π΅Π²Π΅ΠΆΠ΄Π° Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ‚Π΅ Π½Π° C Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΠ΄Ρ‡Π΅Ρ€Ρ‚Π°Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° @inlinec Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, Π² ctypes ΡΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ ΠΈ замСства тялото Π½Π° C функцията с ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° Ρ‚Π΅Π·ΠΈ ΠΎΠ±Π²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ. Π‘Π»Π΅Π΄ Ρ‚Π°ΠΊΠ°Π²Π° трансформация ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π½Π° Python ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° правилния ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½ ΠΈΠ·Ρ…ΠΎΠ΄Π΅Π½ тСкст Π½Π° скрипта, Π² ΠΊΠΎΠΉΡ‚ΠΎ C Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ сС ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‚ с ctypes. ПодобСн ΠΌΠ΅Ρ‚ΠΎΠ΄ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Pyxl4, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° смСсватС HTML ΠΈ Python ΠΊΠΎΠ΄ Π² Π΅Π΄ΠΈΠ½ Ρ„Π°ΠΉΠ».

# ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅: inlinec
ΠΎΡ‚ inlinec ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π°Π½Π΅ inlinec

@inlinec
def тСст ():
#Π²ΠΊΠ»ΡŽΡ‡Π²Π°
void test() {
printf("Π—Π΄Ρ€Π°Π²Π΅ΠΉ, свят");
}

ДосСга Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π΅ прСдставСна ΠΊΠ°Ρ‚ΠΎ СкспСримСнталСн ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Ρ‚Π°ΠΊΠΈΠ²Π° Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈ ΠΊΠ°Ρ‚ΠΎ липсата Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ (с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅) към функцията, нСобходимостта ΠΎΡ‚ стартиранС
β€œgcc -E” Π·Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΊΠΎΠ΄, Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΈ *.so, *.o ΠΈ *.c Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° дирСктория, Π±Π΅Π· ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π°Ρ‚Π° вСрсия ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° Π½Π΅Π½ΡƒΠΆΠ½ΠΈ Π΅Ρ‚Π°ΠΏΠΈ Π½Π° Π°Π½Π°Π»ΠΈΠ· (Π³ΠΎΠ»Π΅ΠΌΠΈ забавяния ΠΏΡ€ΠΈ всяко изпълнСниС).

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€