Questions tagged «python-3.x»

对于特定于该语言版本3+的有关Python编程的问题。如果您的问题不是特定于版本的,则使用更通用的[python]标记。将[python-2.x]标记用于Python 2问题。

19
将字节转换为字符串
我正在使用以下代码从外部程序获取标准输出: >>> from subprocess import * >>> command_stdout = Popen(['ls', '-l'], stdout=PIPE).communicate()[0] communication()方法返回一个字节数组: >>> command_stdout b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file2\n' 但是,我想将输出作为普通的Python字符串使用。这样我就可以像这样打印它: >>> print(command_stdout) -rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1 -rw-rw-r-- 1 thomas thomas 0 …
2300 python  string  python-3.x 

10
为什么在Python 3中“范围(1000000000000000(1000000000000001))”这么快?
据我了解,该range()函数实际上是Python 3中的一种对象类型,它会像生成器一样动态生成其内容。 在这种情况下,我本以为下一行会花费过多的时间,因为要确定1个四舍五入是否在该范围内,必须生成一个四舍五入值: 1000000000000000 in range(1000000000000001) 此外:似乎无论我添加多少个零,计算多少都花费相同的时间(基本上是瞬时的)。 我也尝试过这样的事情,但是计算仍然是即时的: 1000000000000000000000 in range(0,1000000000000000000001,10) # count by tens 如果我尝试实现自己的范围函数,结果将不是很好! def my_crappy_range(N): i = 0 while i < N: yield i i += 1 return 使range()物体如此之快的物体在做什么? 选择Martijn Pieters的答案是因为它的完整性,但也看到了abarnert的第一个答案,它很好地讨论了在Python 3中range成为完整序列的含义,以及一些有关__contains__跨Python实现的函数优化潜在不一致的信息/警告。。abarnert的其他答案更加详细,并为那些对Python 3优化背后的历史(以及xrangePython 2中缺乏优化)感兴趣的人提供了链接。poke和wim的答案为感兴趣的人提供了相关的C源代码和说明。


13
如何刷新打印功能的输出?
Наэтотвопросестьответына 堆栈溢出нарусском:Каквbash-конвейереиспользоватьвыводизpythonсразу? 如何强制将Python的打印功能输出到屏幕? 这与“ 禁用输出缓冲”不是重复的-链接的问题正在尝试无缓冲输出,尽管这更普遍。对于这个问题,最重要的答案太过强大或牵扯太多(对于这个问题,它们不是很好的答案),这个问题可以由相对新手在Google上找到。

30
如何在Python中表示“枚举”?
这个问题的答案是社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 我主要是C#开发人员,但目前正在使用Python开发项目。 如何用Python表示等效的枚举?
1143 python  python-3.x  enums 



20
如何复制字典并仅编辑副本
有人可以向我解释一下吗?这对我来说毫无意义。 我将字典复制到另一个字典中,然后编辑第二个字典,并且两者都已更改。为什么会这样呢? >>> dict1 = {"key1": "value1", "key2": "value2"} >>> dict2 = dict1 >>> dict2 {'key2': 'value2', 'key1': 'value1'} >>> dict2["key2"] = "WHY?!" >>> dict1 {'key2': 'WHY?!', 'key1': 'value1'}


22
在virtualenv中使用Python 3
使用virtualenv,我使用默认版本的Python(2.7)运行项目。在一个项目中,我需要使用Python 3.4。 我曾经brew install python3将其安装在Mac上。现在,如何创建使用新版本的virtualenv? 例如sudo virtualenv envPython3 如果我尝试: virtualenv -p python3 test 我得到: Running virtualenv with interpreter /usr/local/bin/python3 Using base prefix '/usr/local/Cellar/python3/3.4.0_1/Frameworks/Python.framework/Versions/3.4' New python executable in test/bin/python3.4 Also creating executable in test/bin/python Failed to import the site module Traceback (most recent call last): File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/site.py", line 67, in <module> …

8
如何在Python中将字典键作为列表返回?
在Python 2.7中,我可以将字典键,值或项作为列表获取: >>> newdict = {1:0, 2:0, 3:0} >>> newdict.keys() [1, 2, 3] 现在,在Python> = 3.3中,我得到如下信息: >>> newdict.keys() dict_keys([1, 2, 3]) 因此,我必须这样做以获得列表: newlist = list() for i in newdict.keys(): newlist.append(i) 我想知道,是否有更好的方法在Python 3中返回列表?

10
Python 3中的相对导入
我想从同一目录中的另一个文件导入函数。 有时它对我有用,from .mymodule import myfunction但有时我得到: SystemError: Parent module '' not loaded, cannot perform relative import 有时它可与一起使用from mymodule import myfunction,但有时我也会得到: SystemError: Parent module '' not loaded, cannot perform relative import 我不了解这里的逻辑,也找不到任何解释。这看起来完全是随机的。 有人可以向我解释所有这些背后的逻辑是什么?

10
什么是__pycache__?
Наэтотвопросестьответына 堆栈溢出нарусском:ВпапкепроектанаPython的появиласьпапка__pycache__ 据我了解,缓存是类似文件的加密文件。 该__pycache__文件夹怎么办?是我们提供给人们的,而不是我们提供的源代码吗?只是我的输入数据吗?这个文件夹不断创建,它是做什么用的?

9
TypeError:需要类似字节的对象,而在Python3中写入文件时不是'str'
我最近已经迁移到Py 3.5。这段代码在Python 2.7中正常工作: with open(fname, 'rb') as f: lines = [x.strip() for x in f.readlines()] for line in lines: tmp = line.strip().lower() if 'some-pattern' in tmp: continue # ... code 升级到3.5后,我得到了: TypeError: a bytes-like object is required, not 'str' 最后一行错误(模式搜索代码)。 我试过使用.decode()语句两侧的函数,也尝试过: if tmp.find('some-pattern') != -1: continue -无济于事。 我能够很快解决几乎所有的2:3问题,但是这个小小的声明困扰着我。
590 python  python-3.x  string  file  byte 

20
要求用户提供输入,直到他们给出有效的答复
Наэтотвопросестьответына 堆栈溢出нарусском:Каквыполнитьнесколькопровероквведенныхпользователемданных? 我正在编写一个接受用户输入的程序。 #note: Python 2.7 users should use `raw_input`, the equivalent of 3.X's `input` age = int(input("Please enter your age: ")) if age >= 18: print("You are able to vote in the United States!") else: print("You are not able to vote in the United States.") 只要用户输入有意义的数据,该程序就会按预期运行。 C:\Python\Projects> canyouvote.py Please …

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.