如何利用Golang为Python编写模块
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何利用Golang为Python编写模块相关的知识,希望对你有一定的参考价值。
参考技术A 各有千秋,看你那个用得熟悉而已个人python用得比较熟练,写电商后台是完全没有问题的如何将其编写为模块?
【中文标题】如何将其编写为模块?【英文标题】:How to write this as a module? 【发布时间】:2016-04-25 10:46:37 【问题描述】:我想问一下,如何在Python中将以下内容编写为模块。
if message.content.startswith('!guess'):
# Game Status updating
now_playing = discord.Game(name='Guessing Game')
await self.change_status(game=now_playing, idle=False)
await self.send_message(message.channel, 'Guess a number between 1 to 10')
def guess_check(m1):
return m1.content.isdigit()
guess = await self.wait_for_message(timeout=5.0, author=message.author, check=guess_check)
answer = random.randint(1, 10)
if guess is None:
fmt = 'Sorry, you took too long. It was .'
await self.send_message(message.channel, fmt.format(answer))
return
if int(guess.content) == answer:
await self.send_message(message.channel, 'You are right!')
else:
await self.send_message(message.channel, 'Sorry. It is actually .'.format(answer))
# Game Status updating
now_playing = discord.Game(name='')
await self.change_status(game=now_playing, idle=False)
这样我就可以使用guessgame.guess()
来调用它
【问题讨论】:
How to write a Python module?的可能重复 @GingerPlusPlus 问题是我可以编写一个简单的模块(请原谅我是新手)。但是当我尝试编写一个猜谜游戏的模块时,我遇到了一些我不明白的错误。 您使用的是await
,因此您必须使用async def foo()
定义函数,更多内容请参见python.org/dev/peps/pep-0492/#examples-of-await-expressions
【参考方案1】:
创建一个名为 guessgame.py
的 Python 模块文件,然后在其中定义:
"""
This is the module guessgame, it lives in the file guessgame.py
Put some documentation about your module here
"""
def guess(message):
# Put your code here
然后从另一个模块,例如sample.py
(或 Python/IPython shell 会话)你可以这样做:
import guessgame
guessgame.guess(message='something') # What you wanted
RuntimeWarning: coroutine 'guess' 从未等待guessgame.guess()
# 'await' can only be used inside a coroutine
# if you want guess to be a coroutine, define it like below
async def guess(message):
# Put your code that uses await
# Now you can use await expressions
注意:
您使用的是await
,这需要格外小心,请在此处阅读更多信息:https://www.python.org/dev/peps/pep-0492/#examples-of-await-expressions
不要在guessname.guess()
代码中重新定义guess
名称,因为您的函数已经被称为guess
,如果您重新定义guess = ...
,您将影响它
确保您的guessgame.guess()
传递了所有必需的参数,只是为了便于说明,我只包含了一个参数message
我看到您在该代码中使用了self
,这表明这应该是一个类的方法,而不是一个独立的函数?只是需要牢记!
【讨论】:
我收到这个错误:-C:/Users/dell/Desktop/Python Projects/lapzbot/bot/lapzbot.py:208: RuntimeWarning: coroutine 'guess' was never awaited guessgame.guess()
感谢您抽出宝贵时间帮助我。我在这里添加了完整的代码 pastebin.com/NbxasMDD 。希望你能看一次。 Ty 又这么多@bakkal
没问题很高兴我能帮上忙!这就是我要做的。我将创建该代码/类等的空白 Python 模块和另一个使用它的模块。然后我会慢慢地将代码复制/粘贴到模块中,一一处理问题。重复直到整个程序就位并运行。以上是关于如何利用Golang为Python编写模块的主要内容,如果未能解决你的问题,请参考以下文章
GoWorld – 用Golang写一个分布式可扩展可热更的游戏服务器
如何减少 golang tcp 服务器中的 cpu 使用率?
如何让我的用 Golang 编写的 Web 服务器支持 HTTP/2 服务器推送?
在一个 IP 上托管多个 Golang 站点并根据域请求提供服务?