{"id":41193,"date":"2020-02-06T14:42:08","date_gmt":"2020-02-06T11:42:08","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/inlinec-novyj-sposob-ispolzovaniya-si-koda-v-python-skriptah"},"modified":"2020-02-06T14:42:08","modified_gmt":"2020-02-06T11:42:08","slug":"inlinec-novyj-sposob-ispolzovaniya-si-koda-v-python-skriptah","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/inlinec-novyj-sposob-ispolzovaniya-si-koda-v-python-skriptah","title":{"rendered":"Inlinec &#8212; ett nytt s\u00e4tt att anv\u00e4nda C-kod i Python-skript","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Projektet <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/georgek42\/inlinec\">inlinec<\/a><\/noindex> En ny metod f\u00f6r inline-integrering av C-kod i Python-skript har f\u00f6reslagits. Funktioner i C definieras direkt i en fil med Python-kod och markeras med dekoratorn \"@inlinec\". Det sammanst\u00e4llda skriptet k\u00f6rs som det \u00e4r av tolken med spython och analyseras med hj\u00e4lp av den mekanism som tillhandah\u00e5lls i Python. <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.python.org\/3\/library\/codecs.html\">mellan codecs<\/a><\/noindex>, som ger m\u00f6jlighet att ansluta en parser f\u00f6r att transformera skriptet innan det tolkas av tolken (vanligtvis anv\u00e4nds modulen codecs f\u00f6r transparent omkodning av text, men den m\u00f6jligg\u00f6r \u00e4ven godtycklig transformation av skriptinneh\u00e5llet). <\/p>\n<p>Parsern ansluts som en modul (\"from inlinec import inlinec\"), som utf\u00f6r den initiala bearbetningen och \u00f6vers\u00e4tter i realtid definitionerna av C-funktioner, framh\u00e4vd med hj\u00e4lp av annotationerna @inlinec, till ctypes-bindningar och ers\u00e4tter kroppen av C-funktionen med anrop av dessa bindningar. Efter en s\u00e5dan omvandling mottar Python-tolken redan korrekt den omvandlade k\u00e4llkoden av skriptet, d\u00e4r C-funktioner anropas med hj\u00e4lp av  <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.python.org\/3\/library\/ctypes.html\">ctypes<\/a><\/noindex>. En liknande metod anv\u00e4nds ocks\u00e5 i projektet <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pyxl4\/pyxl4\">Pyxl4<\/a><\/noindex>, som m\u00f6jligg\u00f6r att blanda HTML och Python-kod i en och samma fil.<\/p>\n<p>   # coding: inlinec<br \/>\n   from inlinec import inlinec<\/p>\n<p>   @inlinec<br \/>\n   def test():<br \/>\n       #include&lt;stdio.h&gt;<br \/>\n       void test() {<br \/>\n           printf(\"Hello, world\");<br \/>\n       }<\/p>\n<p>Utvecklingen presenteras fortfarande som en experimentell prototyp, d\u00e4r s\u00e5dana brister noteras som ingen st\u00f6d f\u00f6r att skicka pekare (utom str\u00e4ngar) till funktionen, behovet av att k\u00f6ra<br \/>\n\"gcc -E\" f\u00f6r f\u00f6rprocessning av koden, spara mellanliggande *.so, *.o och *.c-filer i den aktuella katalogen, utan cachelagring av den omvandlade varianten och utf\u00f6rande av on\u00f6diga parsing-steg (stora f\u00f6rdr\u00f6jningar vid varje k\u00f6rning). <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>K\u00e4lla: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=52306\">opennet.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u043e\u0435\u043a\u0442\u043e\u043c inlinec \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 inline-\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python. \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0441 \u043a\u043e\u0434\u043e\u043c \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python, \u0432\u044b\u0434\u0435\u043b\u044f\u044f\u0441\u044c \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440\u043e\u043c &#171;@inlinec&#187;. \u0421\u0432\u043e\u0434\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u043c \u0441python \u0438 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u0432 Python \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u043a\u043e\u0434\u0435\u043a\u043e\u0432, \u0434\u0430\u044e\u0449\u0435\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0430\u0440\u0441\u0435\u0440 \u0434\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-41193","post","type-post","status-publish","format-standard","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.5 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u043e\u0435\u043a\u0442\u043e\u043c inlinec \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 inline-\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sv\/blog\/inlinec-novyj-sposob-ispolzovaniya-si-koda-v-python-skriptah\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Inlinec \u2014 \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0421\u0438-\u043a\u043e\u0434\u0430 \u0432 Python-\u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u043e\u0435\u043a\u0442\u043e\u043c inlinec \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 inline-\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/inlinec-novyj-sposob-ispolzovaniya-si-koda-v-python-skriptah\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-06T11:42:08+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-06T11:42:08+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Inlinec \u2014 ett nytt s\u00e4tt att anv\u00e4nda C-kod i Python-skript | ProHoster","description":"Projektet inlinec har f\u00f6reslagit ett nytt s\u00e4tt att inline-integrera C-kod i Python-skript.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/inlinec-novyj-sposob-ispolzovaniya-si-koda-v-python-skriptah","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Inlinec \u2014 \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0421\u0438-\u043a\u043e\u0434\u0430 \u0432 Python-\u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445 | ProHoster","og:description":"\u041f\u0440\u043e\u0435\u043a\u0442\u043e\u043c inlinec \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 inline-\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python.","og:url":"https:\/\/prohoster.info\/sv\/blog\/inlinec-novyj-sposob-ispolzovaniya-si-koda-v-python-skriptah","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-06T11:42:08+00:00","article:modified_time":"2020-02-06T11:42:08+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"41193","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:23:10","updated":"2022-10-01 06:41:29","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/41193","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=41193"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/41193\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=41193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=41193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=41193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}