Questions tagged «python»

Python是一种多范式,动态类型的多用途编程语言。它旨在快速学习,理解和使用并强制使用干净统一的语法。请注意,Python 2自2020年1月1日起已不再受支持。不过,对于特定于版本的Python问题,请添加[python-2.7]或[python-3.x]标签。使用Python变体或库(例如Jython,PyPy,Pandas,Numpy)时,请将其包含在标签中。

5
reduce()有什么问题?
关于python 3.0中reduce()函数的更改以及如何删除它,网上似乎有很多热烈的讨论。我有点难以理解为什么会这样。我发现在各种情况下使用它是很合理的。如果蔑视仅仅是主观的,我无法想象会有这么多人关心它。 我想念什么?reduce()有什么问题?

5
从子流程调用获取退出代码和stderr
我通读了子流程提供的功能-调用,检查_调用,检查_输出,并了解它们各自的工作原理以及功能上的不同。我当前正在使用check_output,因此我可以访问stdout,并使用“ try块”来捕获异常,如下所示: # "cmnd" is a string that contains the command along with it's arguments. try: cmnd_output = check_output(cmnd, stderr=STDOUT, shell=True, timeout=3, universal_newlines=True); except CalledProcessError: print("Status : FAIL") print("Output: \n{}\n".format(cmnd_output)) 我遇到的问题是引发异常时,“ cmnd_output”未初始化并且无法访问stderr,并且出现以下错误消息: print("Output: \n{}\n".format(cmnd_output)) UnboundLocalError: local variable 'cmnd_output' referenced before assignment 我认为那是因为异常导致try块中的“ check_output”立即保释,而没有进行任何进一步的处理,即“ cmnd_output”。如果我错了,请纠正我。 有什么办法可以访问stderr(如果将其发送到stout,可以)并可以访问退出代码。我可以根据退出代码手动检查通过/失败,而不会引发异常。 谢谢,艾哈迈德。

4
在Python中使用TeX将换行符放入matplotlib标签中?
如何在matplotlib中向图的标签(例如xlabel或ylabel)添加换行符?例如, plt.bar([1, 2], [4, 5]) plt.xlabel("My x label") plt.ylabel(r"My long label with $\Sigma_{C}$ math \n continues here") 理想情况下,我也希望y标签也居中。有没有办法做到这一点?标签必须具有TeX(用“ $”括起来)和换行符,这一点很重要。

4
模块函数vs静态方法vs类方法vs没有修饰符:哪个成语更适合pythonic?
我是一个Java开发人员,他喜欢开和关Python。我最近偶然发现了这篇文章,其中提到了Java程序员在选择Python时常犯的错误。第一个吸引了我的眼球: Java中的静态方法不会转换为Python类方法。哦,可以肯定,它或多或少会产生相同的效果,但是类方法的目标实际上是要做通常在Java中甚至是不可能的事情(例如继承非默认构造函数)。Java静态方法的惯用翻译通常是模块级别的函数,而不是类方法或静态方法。(静态的final字段应转换为模块级常量。) 这并不是性能问题,但必须使用此类Java惯用语代码的Python程序员会因键入Foo.Foo.someMethod而应为Foo.someFunction而感到恼火。但请注意,调用类方法涉及额外的内存分配,而调用静态方法或函数则不会。 哦,所有那些Foo.Bar.Baz属性链也不是免费提供的。在Java中,那些点名是由编译器查找的,因此在运行时,实际上有多少个都没有关系。在Python中,查找是在运行时进行的,因此每个点都很重要。(请记住,在Python中,“扁平比嵌套更好”,尽管它与“可读性计数”和“简单胜于复杂”更多地与性能无关)。 我发现这有点奇怪,因为staticmethod的文档说: Python中的静态方法类似于Java或C ++中的静态方法。另请参见classmethod()以获取对创建备用类构造函数有用的变体。 更令人费解的是,这段代码: class A: def foo(x): print(x) A.foo(5) 未能按预期在Python 2.7.3中失败,但在3.2.3中工作正常(尽管您不能仅在类上调用A实例的方法)。 因此,有三种方法可以实现静态方法(如果使用类方法,则有四种方法),每种方法都有细微的差别,其中一种似乎没有记载。这似乎与Python的口头禅不一致,即应该有一种-最好只有一种-显而易见的方法。哪个成语是最Python化的?各自的优缺点是什么? 到目前为止,这是我的理解: 模块功能: 避免Foo.Foo.f()问题 污染模块的名称空间比其他方法更多 没有继承 静态方法: 将与类相关的函数保留在类内部,并保留在模块名称空间之外。 允许在类的实例上调用该函数。 子类可以覆盖该方法。 类方法: 与staticmethod相同,但也将类作为第一个参数传递。 常规方法(仅适用于Python 3): 与staticmethod相同,但不能在类的实例上调用该方法。 我在想这个吗?这不是问题吗?请帮忙!

3
在Django管理界面中,有没有办法复制项目?
只是想知道是否有一种简单的方法来添加功能以复制管理界面中的现有清单? 在数据输入中,我们遇到了很多项目与另一个项目共享通用数据的情况,并且为了节省时间,快速复制现有清单并仅更改更改的数据将非常好。使用更好的模型结构将是减少数据重复的一种方法,但是将来可能会出现需要重复更改重复数据的情况。

7
使用子流程时如何在python中复制tee行为?
我正在寻找一种Python解决方案,该解决方案将允许我将命令的输出保存到文件中而不将其从控制台隐藏。 仅供参考:我想问的是tee(作为Unix命令行实用程序),而不是Python intertools模块中的同名函数。 细节 Python解决方案(不调用tee,在Windows下不可用) 我不需要为调用的进程提供任何输入到stdin 我无法控制被调用的程序。我所知道的是,它将向stdout和stderr输出一些内容,并返回退出代码。 在调用外部程序时工作(子过程) 要对工作都stderr和stdout 之所以能够区分stdout和stderr是因为我可能只想在控制台上显示其中之一,或者我可以尝试使用其他颜色输出stderr-这意味着stderr = subprocess.STDOUT它将不起作用。 实时输出(渐进式)-该过程可以运行很长时间,我无法等待它完成。 Python 3兼容代码(重要) 参考文献 到目前为止,我发现了一些不完整的解决方案: http://devlishgenius.blogspot.com/2008/10/logging-in-real-time-in-python.html(mkfifo仅在Unix上有效) http://blog.kagesenshi.org/2008/02/teeing-python-subprocesspopen-output.html(完全无效) 图表http://blog.i18n.ro/wp-content/uploads/2010/06/Drawing_tee_py.png 当前代码(第二次尝试) #!/usr/bin/python from __future__ import print_function import sys, os, time, subprocess, io, threading cmd = "python -E test_output.py" from threading import Thread class StreamThread ( Thread ): def __init__(self, buffer): …

2
了解NumPy的卷积
在计算简单的移动平均线时,numpy.convolve似乎可以完成任务。 问题:使用时如何进行计算np.convolve(values, weights, 'valid')? 当文档提到时convolution product is only given for points where the signals overlap completely,这两个信号指的是什么? 如果有任何解释可以包括示例和说明,它将非常有用。 window = 10 weights = np.repeat(1.0, window)/window smas = np.convolve(values, weights, 'valid')

4
Python中的循环依赖
我有两个文件node.py和path.py,分别定义了两个类Node和Path。 直到今天,用于Path引用该Node对象的定义,因此我已经做了 from node.py import * 在path.py文件中。 但是,到目前为止,我已经为Node引用该Path对象的对象创建了一个新方法。 尝试导入时遇到了问题path.py:我尝试了一下,当程序运行并调用了using的Path方法时Node,出现了一个Node未定义的异常。 我该怎么办?

5
使用Django Rest Framework返回当前用户
我目前正在使用Django开发API。 但是,我想创建一个视图,该视图返回具有以下端点的当前User:/users/current/。 为此,我创建了一个列表视图,并过滤了发出请求的用户的查询集。可以,但是结果是列表,而不是单个对象。结合分页,与其他端点相比,结果看起来过于复杂且不一致。 我也尝试创建一个详细视图并过滤查询集,但是DRF抱怨我没有提供pk或slug。 你有什么主意吗?

6
防止剧情显示在jupyter笔记本中
如何防止特定的情节显示在Jupyter笔记本中?我在笔记本中有几个绘图,但我希望将其中的一部分保存到文件中,而不要在笔记本上显示,因为这会大大降低速度。 Jupyter笔记本的最小工作示例是: %matplotlib inline from numpy.random import randn from matplotlib.pyplot import plot, figure a=randn(3) b=randn(3) for i in range(10): fig=figure() plot(b) fname='s%03d.png'%i fig.savefig(fname) if(i%5==0): figure() plot(a) 如您所见,我有两种图,a和b。我想绘制a并显示,而我不想b示,我只希望将它们保存在文件中。希望这会加快速度,并且不会污染我的笔记本,而我不需要看到这些数字。 感谢您的时间

8
是否可以根据消息日志级别修改Python的日志记录格式?
我正在使用Python的logging机制将输出打印到屏幕上。我可以使用print语句来做到这一点,但是我想允许用户调整更好的粒度以禁用某些类型的输出。我喜欢为错误打印的格式,但是当输出级别为“信息”时,我希望使用更简单的格式。 例如: logger.error("Running cmd failed") logger.info("Running cmd passed") 在此示例中,我希望以不同的方式打印错误的格式: # error Aug 27, 2009 - ERROR: Running cmd failed # info Running cmd passed 是否可以在没有多个日志记录对象的情况下针对不同的日志级别使用不同的格式?我宁愿在创建记录器后就不修改它,因为有大量的if / else语句来确定如何记录输出。

3
如何关闭SQLAlchemy会话?
遵循我们在如何关闭MySQL中的sqlalchemy连接中的评论之后,我正在检查SQLAlchemy创建到我的数据库中的连接,如果不退出Python,我将无法关闭它们。 如果我在python控制台中运行此代码,它将保持会话打开状态,直到我退出python为止: from sqlalchemy.orm import sessionmaker from models import OneTable, get_engine engine = get_engine(database="mydb") session = sessionmaker(bind=engine)() results = session.query(OneTable.company_name).all() # some work with the data # session.close() 我发现要关闭它的唯一解决方法是engine.dispose()在最后调用。 根据我上面给出的链接中的评论,我的问题现在是: 为什么engine.dispose()需要关闭会议? 还session.close()不够吗



20
Django不向管理员发送电子邮件
根据文档,如果DEBUG设置为,False并且在设置下提供了某些内容ADMINS,则只要代码引发500状态代码,Django就会发送一封电子邮件。我已经正确填写了电子邮件设置(可以很好地使用send_mail),但是每当有意输入错误代码时,我都会得到500.html模板,但不会发送错误电子邮件。是什么导致Django无法做到这一点?
71 python  django 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.