Questions tagged «python»

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

6
'else if'的正确语法是什么?
我是一名新的Python程序员,他正在从2.6.4跃升至3.1.1。在尝试使用“ else if”语句之前,一切都进行得很好。解释器在“ else if”中的“ if”之后给了我一个语法错误,原因是我似乎无法弄清。 def function(a): if a == '1': print ('1a') else if a == '2' print ('2a') else print ('3a') function(input('input:')) 我可能缺少一些非常简单的东西;但是,我无法自行找到答案。
284 python  python-3.x 

2
为什么有些float <整数比较的速度慢四倍?
将浮点数与整数进行比较时,某些值对的评估时间要比其他类似幅度的值花费更长的时间。 例如: &gt;&gt;&gt; import timeit &gt;&gt;&gt; timeit.timeit("562949953420000.7 &lt; 562949953421000") # run 1 million times 0.5387085462592742 但是,如果将float或整数变小或变大一定数量,则比较会更快地运行: &gt;&gt;&gt; timeit.timeit("562949953420000.7 &lt; 562949953422000") # integer increased by 1000 0.1481498428446173 &gt;&gt;&gt; timeit.timeit("562949953423001.8 &lt; 562949953421000") # float increased by 3001.1 0.1459577925548956 更改比较运算符(例如使用==或&gt;代替)不会以任何明显的方式影响时间。 这不只是涉及到大小,因为采摘较大或较小的值会导致比较快,所以我怀疑它已经降到了一些不幸的方式位排队。 显然,对于大多数用例而言,比较这些值已足够快。我只是对为什么Python似乎在某些价值观上比在其他价值观上挣扎更多感到好奇。

12
编译语言与口译语言
我正在尝试更好地理解它们之间的区别。我在网上找到了很多解释,但是它们倾向于抽象的差异,而不是实际的含义。 我的大部分编程经验都来自CPython(动态的,解释的)和Java(静态的,编译的)。但是,我知道还有其他种类的解释和编译语言。除了可以从以编译语言编写的程序中分发可执行文件这一事实之外,每种类型是否都有优点/缺点?通常,我听到人们争辩说解释语言可以交互使用,但是我相信编译语言也可以具有交互实现,对吗?

12
在Python中包装C库:C,Cython或ctypes?
我想从Python应用程序调用C库。我不想包装整个API,只包装与我的情况相关的函数和数据类型。如我所见,我有三个选择: 在C中创建一个实际的扩展模块。可能有点过头了,我还想避免学习扩展编写的开销。 使用Cython将C库的相关部分公开给Python。 使用Python ctypes与外部库进行通信,从而完成整个工作。 我不确定2)还是3)是更好的选择。3)的优点是它ctypes是标准库的一部分,并且生成的代码将是纯Python –尽管我不确定该优点实际上有多大。 两种选择都有其他优点/缺点吗?您推荐哪种方法? 编辑:感谢您的所有答复,它们为希望做类似事情的任何人提供了很好的资源。当然,仍需针对单个案例做出决定-没有人会回答“这是对的”。就我自己而言,我可能会使用ctypes,但我也期待在其他项目中试用Cython。 由于没有一个单一的真实答案,因此接受一个答案有点武断。我选择了FogleBird的答案,因为它提供了对ctypes的一些很好的了解,并且它也是当前投票最高的答案。但是,我建议您阅读所有答案以获得一个很好的概述。 再次感谢。
284 python  c  ctypes  cython 


23
如何替换一个字符串的多个子字符串?
我想使用.replace函数替换多个字符串。 我目前有 string.replace("condition1", "") 但想有类似的东西 string.replace("condition1", "").replace("condition2", "text") 尽管那听起来不像是好的语法 正确的方法是什么?有点像如何在grep / regex中进行操作\1以及\2如何将字段替换为某些搜索字符串
284 python  text  replace 

9
Django datetime问题(default = datetime.now())
我有下面的数据库模型: from datetime import datetime class TermPayment(models.Model): # I have excluded fields that are irrelevant to the question date = models.DateTimeField(default=datetime.now(), blank=True) 我使用以下方法添加新实例: tp = TermPayment.objects.create(**kwargs) 我的问题:数据库中的所有记录在date字段中都具有相同的值,这是第一次付款的日期。服务器重新启动后,一个记录具有新的日期,其他记录与第一个相同。看起来好像有些数据被缓存了,但是我找不到位置。 数据库:mysql 5.1.25 Django v1.1.1
283 python  django 

13
python:如何识别变量是数组还是标量
我有一个接受参数的函数NBins。我想用标量50或数组对此函数进行调用[0, 10, 20, 30]。我如何识别函数的长度NBins是多少?或换句话说,如果它是标量或向量? 我尝试了这个: &gt;&gt;&gt; N=[2,3,5] &gt;&gt;&gt; P = 5 &gt;&gt;&gt; len(N) 3 &gt;&gt;&gt; len(P) Traceback (most recent call last): File "&lt;stdin&gt;", line 1, in &lt;module&gt; TypeError: object of type 'int' has no len() &gt;&gt;&gt; 正如你看到的,我不能申请len到P,因为它不是一个数组....有什么样isarray或isscalar在Python? 谢谢

5
如何在Python 2.7中隐藏子进程的输出
我在Ubuntu上使用eSpeak,并且有一个Python 2.7脚本可以打印和显示一条消息: import subprocess text = 'Hello World.' print text subprocess.call(['espeak', text]) eSpeak产生所需的声音,但由于一些错误(ALSA lib ...,没有套接字连接)而使外壳混乱,因此我无法轻松读取之前打印的内容。退出代码为0。 不幸的是,没有记录的选项可以关闭其详细信息,因此我正在寻找一种方法,仅在视觉上使其静音并保持打开的外壳干净以进行进一步的交互。 我怎样才能做到这一点?

6
语法错误:函数返回“£”时文件中的非ASCII字符“ \ xa3”
说我有一个功能: def NewFunction(): return '£' 我想打印一些在前面带有井号的东西,并且在我尝试运行该程序时打印出错误,并显示以下错误消息: SyntaxError: Non-ASCII character '\xa3' in file 'blah' but no encoding declared; see http://www.python.org/peps/pep-0263.html for details 谁能告诉我如何在返回函数中加入井号吗?我基本上是在课堂上使用它,并且在'__str__'包含磅符号的部分内。




8
Python 3:ImportError“没有名为Setuptools的模块”
我在使用Python 3安装软件包时遇到了麻烦。 我一直都使用来安装软件包setup.py install。但是现在,当我尝试安装ansicolors软件包时,我得到了: importerror“没有名为Setuptools的模块” 我不知道该怎么办,因为过去我没有安装过setuptools。尽管如此,我仍然能够在setup.py install没有setuptools的情况下安装许多软件包。为什么现在应该获得setuptools? 我什至无法安装setuptools,因为我有Python 3.3,setuptools不支持Python 3。 为什么我的安装命令不再起作用?


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.