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

这是「进击的Coder」的第 658 篇技术分享

作者:渡码

来源:渡码

阅读本文大概需要 5 分钟。

如果将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(5, 2))

转换成 C++ 代码如下:

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

int add_something(int x, int y) {
    cout << "casually adding some stuff together" << endl;
    int z = x + y;
    return z;
}

int main() {
    cout << "Okay, lets go" << endl;
    cout << add_something(5, 2) << endl;
    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、根据代码编写文档等。

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

a2c9ae2ca7eeb47d05c99c063f31e05e.png
代码转自然语言

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

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

4baa00571f72ea2cff8ce8545af563a7.png
docstring

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

2. 一个坏消息

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

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

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

a7aa6a37e4a432919ab37cf1baa3d99a.png
国内无法使用

上来就被卡脖子了!

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

75fa8b36b30e4f5ae1b443bab2113f9a.png

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

No such model: code-davinci-002

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

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

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

b6056d3b3924f82a5647286902517338.png

希望今天的内容对你有用,感谢你的关注,我将持续分享优秀的 AI 项目。

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

a0860f72b5e5a06067cd7fef7b28c402.png

End

崔庆才的新书《Python3网络爬虫开发实战(第二版)》已经正式上市了!书中详细介绍了零基础用 Python 开发爬虫的各方面知识,同时相比第一版新增了 JavaScript 逆向、Android 逆向、异步爬虫、深度学习、Kubernetes 相关内容,‍同时本书已经获得 Python 之父 Guido 的推荐,目前本书正在七折促销中!

内容介绍:《Python3网络爬虫开发实战(第二版)》内容介绍

4ccb3dea4fa7c5458e59d0707d43b137.jpeg

扫码购买

41d0e0caac8d52b42237d782ccd1f6e8.png

好文和朋友一起看~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值