Questions tagged «python»

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

1
如何注释多个返回值的类型?
我如何使用类型提示来注释一个返回Iterable总是返回两个值的函数:abool和a str?提示Tuple[bool, str]很接近,除了将返回值类型限制为元组,而不是生成器或其他可迭代类型。 我主要是好奇的,因为我想注释一个foo()用于返回多个值的函数,如下所示: always_a_bool, always_a_str = foo() 通常函数喜欢foo()做这样的事情return a, b(它返回一个元组),但我喜欢的类型暗示要足够灵活,以取代发电机或列表或别的东西返回的元组。

1
为什么带有f字符串的f'{{{74}}}'与f'{{74}}'相同?
f字符串可从Python 3.6中获得,对于格式化字符串非常有用: >>> n='you' >>> f'hello {n}, how are you?' 'hello you, how are you?' 在Python 3的f字符串中阅读有关它们的更多信息:改进的字符串格式语法(指南)。我发现了一个有趣的模式: 请注意,使用三重花括号将导致字符串中只有一个大括号: >>> f"{{{74}}}" '{74}' 但是,如果使用的括号多于三个,则可以显示更多的括号: >>> f"{{{{74}}}}" '{{74}}' 确实是这样: >>> f'{74}' '74' >>> f'{{74}}' '{74}' 现在,如果我们从两个传递{到三个,结果将是相同的: >>> f'{{{74}}}' '{74}' # same as f'{{74}}' ! 因此,我们最多需要4个!({{{{)获得两个大括号作为输出: >>> f'{{{{74}}}}' '{{74}}' 为什么是这样?从那时起,用两个花括号使Python需要一个额外的花括号会发生什么?

3
我应该如何在Django中编写有关Forms的测试?
在编写测试时,我想在Django中模拟对视图的请求。这主要是测试表格。这是一个简单的测试请求的片段: from django.tests import TestCase class MyTests(TestCase): def test_forms(self): response = self.client.post("/my/form/", {'something':'something'}) self.assertEqual(response.status_code, 200) # we get our page back with an error 无论是否存在表单错误,页面始终返回200的响应。如何检查我的表格是否失败以及特定字段(soemthing)是否存在错误?

6
如何在Python中使用布尔值?
Python实际上包含布尔值吗?我知道您可以做到: checker = 1 if checker: #dostuff 但是我相当学究,喜欢在Java中看到布尔值。例如: Boolean checker; if (someDecision) { checker = true; } if(checker) { //some stuff } Python中是否有布尔值之类的东西?我似乎在文档中找不到类似的内容。
109 python  boolean 

8
Python备注/延迟查找属性装饰器
最近,我浏览了现有的代码库,其中包含许多类,其中实例属性反映了存储在数据库中的值。我已经重构了许多这些属性,以便推迟它们的数据库查找。不会在构造函数中初始化,而只能在初次阅读时进行初始化。这些属性在实例的生存期内不会更改,但是它们是第一次计算该瓶颈,并且仅在特殊情况下才真正访问。因此,它们也可以在从数据库中检索出来之后进行缓存(因此,它适合于记忆的定义,其中输入只是“无输入”)。 我发现自己一遍又一遍地输入以下代码段,以获取各个类中的各个属性: class testA(object): def __init__(self): self._a = None self._b = None @property def a(self): if self._a is None: # Calculate the attribute now self._a = 7 return self._a @property def b(self): #etc 我已经不知道有没有使用Python的现有装饰器来执行此操作?或者,是否有合理简单的方法来定义装饰器呢? 我正在Python 2.5下工作,但是2.6答案如果有很大不同,可能仍然很有趣。 注意 在Python包含许多现成的装饰器之前,就曾问过这个问题。我更新它只是为了更正术语。
109 python  decorator 

4
使用快速傅立叶变换分析音频
我正在尝试在python中创建图形频谱分析仪。 我目前正在读取16位双通道,44,100 Hz采样率音频流的1024个字节,并将两个通道的幅度平均在一起。因此,现在我有一系列256条带符号的短裤。现在,我想使用numpy之类的模块在该阵列上执行fft,并使用结果创建图形频谱分析仪,其开始时只有32条。 我已经阅读了有关快速傅立叶变换和离散傅立叶变换的维基百科文章,但是我仍然不清楚结果数组代表什么。这是我使用numpy在数组上执行fft后的数组外观: [ -3.37260500e+05 +0.00000000e+00j 7.11787022e+05 +1.70667403e+04j 4.10040193e+05 +3.28653370e+05j 9.90933073e+04 +1.60555003e+05j 2.28787050e+05 +3.24141951e+05j 2.09781047e+04 +2.31063376e+05j -2.15941453e+05 +1.63773851e+05j -7.07833051e+04 +1.52467334e+05j -1.37440802e+05 +6.28107674e+04j -7.07536614e+03 +5.55634993e+03j -4.31009964e+04 -1.74891657e+05j 1.39384348e+05 +1.95956947e+04j 1.73613033e+05 +1.16883207e+05j 1.15610357e+05 -2.62619884e+04j -2.05469722e+05 +1.71343186e+05j -1.56779748e+04 +1.51258101e+05j -2.08639913e+05 +6.07372799e+04j -2.90623668e+05 -2.79550838e+05j -1.68112214e+05 +4.47877871e+04j -1.21289916e+03 +1.18397979e+05j -1.55779104e+05 +5.06852464e+04j 1.95309737e+05 +1.93876325e+04j -2.80400414e+05 …

5
如何从IDLE访问命令历史记录?
在bash或Window的命令提示符上,我们可以按键盘上的向上箭头以获取最后一个命令,然后对其进行编辑,然后再次按Enter以查看结果。 但是在Python的IDLE 2.6.5或3.1.2中,似乎如果我们的语句打印出了25行,我们需要按向上箭头25次到最后一个命令,然后按Enter才能将其复制? 还是使用鼠标查明该行并单击那里,然后按Enter键进行复制?有没有更快的方法?


4
Python super()引发TypeError
在Python 2.5中,以下代码引发TypeError: >>> class X: def a(self): print "a" >>> class Y(X): def a(self): super(Y,self).a() print "b" >>> c = Y() >>> c.a() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 3, in a TypeError: super() argument 1 must be type, not classobj 如果我更换class …

1
熊猫read_xml()方法测试策略
当前,pandas I / O工具没有维护read_xml()方法,而相应的工具to_xml()。但是,read_json证明可以为数据帧导入和read_html标记格式实现树状结构。 如果大熊猫团队会考虑这样一个read_xml为未来大熊猫版本的方法,他们会追求什么实现:使用内置的解析xml.etree.ElementTree其iterfind()或iterparse()功能或第三方模块,lxml其XPath 1.0和XSLT 1.0的方法呢? 以下是我在简单,扁平,以元素为中心的XML输入上针对四种方法类型的测试运行。所有这些都针对root的任何第二级子级进行了通用解析,并且每种方法都应产生完全相同的pandas数据帧。除最后一次调用外pd.Dataframe(),所有其他功能都在词典列表中。XSLT方法将XML转换为CSV,以便StringIO()在中进行转换pd.read_csv()。 问题 (多部分) 性能:您如何解释由于iterparse迭代解析文件而通常建议对较大文件使用的速度较慢的速度?部分原因是由于if逻辑检查吗? 内存:CPU内存是否与I / O调用中的时间相关?XSLT和XPath 1.0在较大的XML文档中往往无法很好地扩展,因为必须在内存中读取整个文件才能进行解析。 策略:词典列表是Dataframe()呼叫的最佳策略吗?请参阅以下有趣的答案:生成器版本和iterwalk用户定义版本。两个上载列表到数据帧。 输入数据(Stack Overflow当前的年度最大用户,其中包括我们的熊猫朋友) <?xml version="1.0" encoding="utf-8"?> <stackoverflow> <topusers> <user>Gordon Linoff</user> <link>http://www.stackoverflow.com//users/1144035/gordon-linoff</link> <location>New York, United States</location> <year_rep>5,985</year_rep> <total_rep>499,408</total_rep> <tag1>sql</tag1> <tag2>sql-server</tag2> <tag3>mysql</tag3> </topusers> <topusers> <user>Günter Zöchbauer</user> <link>http://www.stackoverflow.com//users/217408/g%c3%bcnter-z%c3%b6chbauer</link> <location>Linz, Austria</location> <year_rep>5,835</year_rep> <total_rep>154,439</total_rep> <tag1>angular2</tag1> <tag2>typescript</tag2> <tag3>javascript</tag3> </topusers> <topusers> <user>jezrael</user> …
109 python  xml  pandas  xslt  xpath 

2
Python中的简单“ if”或逻辑语句
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 4个月前关闭。 改善这个问题 您将如何在Python中编写以下内容? if key < 1 or key > 34: 我已经尝试了所有可以想到的方法,并且发现它非常令人沮丧。

10
通过choices =…设置Django IntegerField
当您拥有一个带有选项选项的模型字段时,您倾向于具有一些与人类可读名称相关的魔术值。Django中是否有一种方便的方法来通过人类可读的名称而不是值来设置这些字段? 考虑以下模型: class Thing(models.Model): PRIORITIES = ( (0, 'Low'), (1, 'Normal'), (2, 'High'), ) priority = models.IntegerField(default=0, choices=PRIORITIES) 在某个时候,我们有一个Thing实例,我们想设置它的优先级。显然你可以做, thing.priority = 1 但这迫使您记住优先级的值-名称映射。这不起作用: thing.priority = 'Normal' # Throws ValueError on .save() 目前,我有这个愚蠢的解决方法: thing.priority = dict((key,value) for (value,key) in Thing.PRIORITIES)['Normal'] 但这很笨重。考虑到这种情况有多普遍,我想知道是否有人有更好的解决方案。是否有一些我完全忽略的通过选择名称设置字段的字段方法?



11
了解Python的“ is”运算符
该is运营商不匹配变量的值,但这些实例本身。 到底是什么意思 我声明了两个变量,x并y在两个变量中分配了相同的值,但是当我使用is运算符时,它返回false 。 我需要澄清。这是我的代码。 x = [1, 2, 3] y = [1, 2, 3] print(x is y) # It prints false!
109 python  operators 

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.