社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

将 Python代码,自动转成其他编程语言代码

Python编程时光 • 2 年前 • 395 次点击  

如果将Python代码自动转成其他编程语言,你会尝试吗?

今天给大家分享一个有意思的项目,它能将Python代码自动转成C++代码。这或许对搞算法的同学有点帮助。

1. 如何实现

该项目是 GitHub 开源项目,使用非常简单,下载后安装依赖,运行对应的Python脚本即可。

python3 python2cppconverter.py

以下面的 Python 代码为例

def add_something(x, y):
    print("casually adding some stuff together")
    z = x + y
    return z


if __name__ == "__main__":
    print('Okay, lets go')
    print(add_something(52))

转换成 C++ 代码如下:

// C++ Code generated from Python Code: 
#include 
using namespace std;

int add_something(int x, int y) {
    cout     return z;
}

int main() {
    cout 2) return 0;
}

python2cppconverter.py实际上是调用OpenAIAPI来完成代码转换。核心代码如下:

openai.Completion.create(engine='code-davinci-002'
  prompt=input_prompt, 
  temperature=temperature,
  max_tokens=num_tokens, 
  stream=STREAM, 
  stop='===================\n',
  top_p=1.0
  frequency_penalty=0.0
  presence_penalty=0.0)

本质上就是一个函数调用,其中engine参数是代码转换模型。

介绍code-davinci-002之前,先来了解下GPT-3模型。

GPT-3OpenAI在 2020年 5 月发布的一个模型,这个模型包含1750亿的参数,比GPT-2多了两个数量级,比GPT-2有了极大的改进。

GPT-3 在许多 NLP 数据集上实现了强大的性能,包括翻译、问答和完形填空任务,以及一些需要即时推理或领域适应的任务,例如解读单词或执行算术运算。

code-davinci-002模型是GPT-3的后代,它的训练数据包含自然语言和来自 GitHub 的数十亿行公共代码。因此,它可以理解和生成代码,精通十多种编程语言,最擅长Python

所以,code-davinci-002模型不止能实现编程语言之间相互转换,还可以与自然语言互转、找代码中的BUG、根据代码编写文档等。

比如下面的例子就是为代码功能生成文字性描述

代码转自然语言

是不是以后就不用愁写注释了?

再看看下面这个例子,可以为Python代码生成docstring

docstring

其他例子大家可以看OpenAI官网。

2. 一个坏消息

上面说得很美好,然而现实很残酷。

我自从下载了这个项目,从开始运行就一步一个坑。

上面用到的OpenAI API,并不对国内开放,国内的朋友申请使用时会看到下面的提示

国内无法使用

上来就被卡脖子了!

当然,国内有团队提供了解决方案,花 18 元可以买一个现成的国外账号,有效期将近 3 个月,账号内自带 18 美元。所以,OpenAI的模型是收费的,一点不清真。

当你买了账号,获取了API key,把它配置到项目中,运行项目,准备见证时刻的奇迹时,会发现如下报错:

No such model: code-davinci-002

这是因为code-davinci-002模型处于私有测试中,需要提交申请,通过后才能调用。

最后,我不建议大家运行code-davinci-002模型,对国内朋友来说,成本太高了。如果想看效果,可以到OpenAI官网看看文档、在线运行一些example即可。

虽然项目没有成功运行起来,但这并不妨碍我们学习技术,这波强行不亏。

项目地址:https://github.com/alxschwrz/codex_py2cpp






Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/135674
 
395 次点击