Код IronPython не работает в 3.4, но работает в 2.7

Поэтому я установил IronPython 3.4, чтобы заменить IronPython 2.7, который я использовал. Приведенный ниже код отлично работал в версии 2.7, но когда я использую его в версии 3.4, я получаю сообщение об ошибке: Microsoft.Scripting.SyntaxErrorException: «неверный синтаксис». Есть идеи? Спасибо.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            Microsoft.Scripting.Hosting.ScriptEngine pythonEngine = IronPython.Hosting.Python.CreateEngine();
            Microsoft.Scripting.Hosting.ScriptSource pythonScript = pythonEngine.CreateScriptSourceFromString("print 'Hello World!'");
            pythonScript.Execute();

        }
    }
}

Попробовал приведенный выше код, и он не работал, но работал в IronPython 2.7.

print — это вызов функции в python3.
Abdul Niyas P M 02.11.2022 16:04

Это работало в IronPython 2.7?

charliewhittaker 02.11.2022 16:05
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

IronPython 3.4 использует синтаксис python 3.4, где as IronPython 2.7 использует python 2.7.

В Python 2.7 print — это оператор, где, как и в Python 3, print — это функция (что означает, что вам нужно использовать круглые скобки для переноса аргументов). Итак, чтобы ваш код работал, вы должны изменить следующий раздел с

pythonEngine.CreateScriptSourceFromString("print 'Hello World!'");
                                           ^^^^^^^^^^^^^^^^^^^^

к

pythonEngine.CreateScriptSourceFromString("print('Hello World!')");
                                           ^^^^^^^^^^^^^^^^^^^^^

Хорошо спасибо. Так что в любом случае я мог бы заставить это работать, поскольку я новичок в python

charliewhittaker 02.11.2022 16:10

Другие вопросы по теме