小编Pat*_*ugh的帖子

bbox_to_anchor和loc在matplotlib中

我遇到了matplotlib使用关键字loc和自定义图例位置的代码bbox_to_anchor.例如 :

fig.legend([line1, line2], ['series1', 'series2'], bbox_to_anchor=[0.5, 0.5], 
           loc='center', ncol=2)
Run Code Online (Sandbox Code Playgroud)

我已经看到上面的变化bbox_to_anchor用于之后loc.

我理解使用bbox_to_anchorloc分开的目的.但是,在同一传奇规范中使用两者有什么好处吗?根据我的理解和用法,在我看来,如果bbox_to_anchor指定,那么loc参数几乎不在乎.

谁能证实这一点?我没有看到任何关于此的文档.

python matplotlib

27
推荐指数
2
解决办法
4万
查看次数

Python asyncio - 使用Task的循环退出已被销毁,但它正在等待处理

这是我的python程序的相关代码:

import discord
import asyncio

class Bot(discord.Client):
    def __init__(self):
        super().__init__()

    @asyncio.coroutine
    def my_background_task(self):
        yield from self.wait_until_ready()
        while not self.is_closed:
            yield from asyncio.sleep(3600*24) # <- This is line 76 where it fails
            doSomething()

bot = Bot()
loop = asyncio.get_event_loop()
try:
    loop.create_task(bot.my_background_task())
    loop.run_until_complete(bot.login('username', 'password'))
    loop.run_until_complete(bot.connect())
except Exception:
    loop.run_until_complete(bot.close())
finally:
    loop.close()
Run Code Online (Sandbox Code Playgroud)

该程序偶尔退出(自己,但不应该),除了以外没有其他错误或警告

Task was destroyed but it is pending!
task: <Task pending coro=<my_background_task() running at bin/discordBot.py:76> wait_for=<Future pending cb=[Task._wakeup()]>>
Run Code Online (Sandbox Code Playgroud)

如何确保程序不会随机退出?我在Xubuntu 15.10上有Python 3.4.3+.

python-3.x python-asyncio discord discord.py

12
推荐指数
1
解决办法
4789
查看次数

如何使用Python数据类记录类的构造函数?

我有一些现有的Python 3.6代码,我想转移到Python 3.7数据类.我有一些__init__方法,包含很好的文档字符串文档,指定构造函数所采用的属性及其类型.

但是,如果我在3.7中更改这些类以使用新的Python数据类,则构造函数是隐式的.在这种情况下,如何提供构造函数文档?我喜欢数据类的想法,但如果我不得不放弃使用它们的清晰文档.

编辑澄清我目前正在使用docstrings

python documentation python-3.7 python-dataclasses

12
推荐指数
3
解决办法
2882
查看次数

何时检查是否存在非局部变量?

我正在学习Python,现在我正在讨论范围和非本地语句.在某些时候,我以为我想到了这一切,但随后非本地人来了,打破了一切.

示例1:

print( "let's begin" )
def a():
    def b():
        nonlocal x
        x = 20
    b()

a()
Run Code Online (Sandbox Code Playgroud)

自然运行失败.
更有趣的是,print()不会被执行.为什么?.

我的理解是封闭def a()在执行之前print()不会执行,嵌套def b()只在a()被调用时执行.我很迷惑...

好的,让我们尝试第2个例子:

print( "let's begin" )
def a():
    if False: x = 10
    def b():
        nonlocal x
        x = 20
    b()

a()
Run Code Online (Sandbox Code Playgroud)

Aaand ......它运行良好.Whaaat?这是怎么解决的?x = 10在函数a中永远不会执行!

我的理解是在运行时评估和执行非本地语句,搜索封闭函数的调用上下文并将本地名称绑定x到某个特定的"外部" x.如果x外部函数中没有- 引发异常.再次,在运行时.

但现在看来这是在语法分析时完成的,非常愚蠢的检查"看看外部函数x = blah,如果有这样的东西 - 我们很好",即使x = blah从未执行过...... …

python scope python-3.x

10
推荐指数
1
解决办法
472
查看次数

删除“找不到命令”错误 discord.py

在 discord.py 重写机器人中,如果有人输入机器人前缀,然后输入任何文本,如果找不到作为命令的文本,您将得到

Ignoring exception in command None:
discord.ext.commands.errors.CommandNotFound: Command "sd" is not found
Run Code Online (Sandbox Code Playgroud)

有没有办法阻止机器人记录这个?

python python-3.x discord discord.py discord.py-rewrite

9
推荐指数
1
解决办法
1万
查看次数

如何显示使用@dataclass类装饰器时生成的代码?

Python 3.7引入了dataclasses包含@dataclass装饰器的模块。该装饰器可以生成类函数。如何打印这些生成的函数?

python python-3.7 python-dataclasses

8
推荐指数
2
解决办法
160
查看次数

Python中有sorted()的神奇方法吗?

我知道Python中有一些神奇的方法可以被类覆盖,以控制某些内置函数处理这些类的成员的方式。例如,len()和的行为可以通过魔术方法和str()覆盖:__len__()__str__()

class EmptySet(object):
    def __len__(self):
        return 0

    def __str__(self):
        return '[]'

>>> e = EmptySet()
>>> str(e)
[]

>>> len(e)
0
Run Code Online (Sandbox Code Playgroud)

还有__cmp__()and__ge__()__le__()方法来控制如何比较这些对象以及如何对它们的列表进行排序list.sort()。我的问题不是关于自定义列表中对象的顺序,而是关于对对象本身进行排序。假设该集合不为空并且我想用sorted()它来排序:

class SetOfTwo(object):
    def __init__(self, a , b):
        el_0 = a
        el_1 = b

    def __len__(self):
        return 2

    def __str__(self):
        return '[{}, {}]'.format(el_0, el_1)
Run Code Online (Sandbox Code Playgroud)

sorted()如果元素不按顺序排列,我可以实现一种神奇的方法来翻转元素吗?我正在想象以下行为:

>>> s = SetOfTwo(2, 1)
>>> str(s)
[2, 1]

>>> t = sorted(s)
>>> str(t)
[1, 2] …
Run Code Online (Sandbox Code Playgroud)

python oop magic-methods

7
推荐指数
1
解决办法
8751
查看次数

三个数字的最大乘积

我试图从leetcode解决这个问题,为了方便起见,这里要复制

Given an integer array, find three numbers whose product is maximum and output the maximum product.

Example 1:
Input: [1,2,3]
Output: 6
Example 2:
Input: [1,2,3,4]
Output: 24
Note:
The length of the given array will be in range [3,104] and all elements are in the range [-1000, 1000].
Multiplication of any three numbers in the input won't exceed the range of 32-bit signed integer.
Run Code Online (Sandbox Code Playgroud)

在(尝试不成功)尝试之后,我搜索了解决方案,这是有效的

class Solution(object):
    def maximumProduct(self, nums):
        """
        :type nums: List[int]
        :rtype: int …
Run Code Online (Sandbox Code Playgroud)

python algorithm python-2.7

7
推荐指数
1
解决办法
328
查看次数

python检查是否调用了一个方法而不嘲笑它

class A():
    def tmp(self):
        print("hi")

def b(a):
    a.tmp()
Run Code Online (Sandbox Code Playgroud)

要检查是否在b中调用了tmp方法,推荐的方法是

a = A()
a.tmp = MagicMock()
b(a)
a.tmp.assert_called()
Run Code Online (Sandbox Code Playgroud)

但是这里的tmp被嘲笑了,并没有导致"hi"被打印出来。

我希望我的单元测试可以检查方法tmp是否被调用而不会模拟它。

这可能吗?

我知道在编写unitest时这不是标准的事情。但是我的用例(有点棘手)需要这样做。

python unit-testing mocking python-3.x magicmock

7
推荐指数
1
解决办法
1612
查看次数

Discord.py-rewrite wait_for() 如何使用?

我不能真正使用wait_if ()我想要的方式,谁能解释如何使用wait_for ('message')and wait_for ('reaction'),只能由命令的用户?(消息由谷歌翻译,如有错误请见谅...)

python discord.py discord.py-rewrite

7
推荐指数
1
解决办法
2万
查看次数