小编wal*_*rus的帖子

为什么Python 3允许"00"作为0的文字而不允许"01"作为1的文字?

为什么Python 3允许"00"作为0的文字而不允许"01"作为1的文字?有充分的理由吗?这种不一致令我感到困惑.(我们正在讨论Python 3,它故意破坏向后兼容性以实现一致性等目标.)

例如:

>>> from datetime import time
>>> time(16, 00)
datetime.time(16, 0)
>>> time(16, 01)
  File "<stdin>", line 1
    time(16, 01)
              ^
SyntaxError: invalid token
>>>
Run Code Online (Sandbox Code Playgroud)

python integer literals python-3.x leading-zero

109
推荐指数
2
解决办法
4912
查看次数

使用ABC和ABCMeta之间有什么区别吗?

在Python 3.4+中,我们可以做到

class Foo(abc.ABC):
    ...
Run Code Online (Sandbox Code Playgroud)

或者我们可以做到

class Foo(metaclass=abc.ABCMeta):
    ...
Run Code Online (Sandbox Code Playgroud)

我应该注意两者之间是否有任何差异?

python python-3.x

29
推荐指数
1
解决办法
5237
查看次数

在Windows中更改Python 3中的"区域设置首选编码"

我正在使用Python 3(最近从Python 2切换).我的代码通常在Linux上运行,但有时(不常见)在Windows上运行.根据Python 3文档open(),locale.getpreferredencoding()如果encoding未提供arg,则文本文件的默认编码来自.我希望这个默认值适用于我utf-8的项目,无论它运行的是什么操作系统(目前,它始终是Linux的UTF-8,但不适用于Windows).该项目有很多次调用open(),我不想添加encoding='utf-8'到所有这些调用.因此,我想在Windows中更改区域设置的首选编码,就像Python 3看到的那样.

我发现了之前的问题" 更改"区域设置首选编码" ",它有一个已接受的答案,所以我觉得我很高兴.但不幸的是,该答案中的建议命令及其第一条评论都不适用于Windows.具体而言,公认的答案和它的第一个意见建议运行chcp 65001set PYTHONIOENCODING=UTF-8,我都试过.请从我的cmd窗口查看下面的脚本:

> py -i
Python 3.4.3 ...
>>> f = open('foo.txt', 'w')
>>> f.encoding
'cp1252'
>>> exit()

> chcp 65001
Active code page: 65001

> py -i
Python 3.4.3 ...
>>> f = open('foo.txt', 'w')
>>> f.encoding
'cp1252'
>>> exit()

> set PYTHONIOENCODING=UTF-8

> py -i
Python 3.4.3 ...
>>> f = open('foo.txt', 'w')
>>> …
Run Code Online (Sandbox Code Playgroud)

python windows encoding utf-8 python-3.x

17
推荐指数
3
解决办法
7470
查看次数

在Python中,如何使用newline =''打开传入的文件对象?

我正在编写一个接收文件对象的函数,例如

def my_fn(file_obj):
    assert <what expression here?>, "file_obj must be opened with newline=''."
    ...
Run Code Online (Sandbox Code Playgroud)

我想在函数中做的第一件事就是确保传入的文件对象是用它打开的newline=''.我该怎么做呢?谢谢.

PS.我相信这个问题仅适用于Python 3,因为newline=''它只存在于Python 3中(注意它与默认值不同newline=None).

python python-3.x

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

当git-config(1)表示"仅在输出到终端时才使用颜色"时,git-config(1)是什么意思?

我正在输出到终端,但是Git没有正确地检测到我正在输出到终端,以便为输出着色.我的问题是,当git-config(1)表示"仅在输出到终端时才使用颜色"时,git-config(1)的含义是什么(此短语出现在多个配置描述的末尾,例如color.ui和color .科)?换句话说,Git如何决定它是否输出到终端,以及如何更改我的环境设置以告知Git我的终端确实是终端?

细节:
我在Windows上使用带有Cygwin的rxvt终端.我也安装了MSysGit.当我进行Git配置设置时:

[color]
    ui = auto
    branch = auto
    status = auto
Run Code Online (Sandbox Code Playgroud)

我的终端输出中仍然没有颜色.但是,当我切换到

[color]
    ui = always
    branch = always
    status = always
Run Code Online (Sandbox Code Playgroud)

然后有正确的彩色输出.但是,为了正确处理实际的非终端案例,我需要切换回"auto"而不是"always".因此,为了使"自动"正常工作:如何更改我的环境以使Git认识到我的rxvt + Cygwin是一个能够支持颜色的终端?

(PS.由于比这个相对较小的颜色问题更大的问题,我不能使用Cygwin版本的Git.请不要回复告诉我切换到Cygwin版本.)

谢谢你的帮助!

git cygwin rxvt msysgit git-config

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

Python namedtuple T._make(可迭代)vs T(*可迭代)

次要问题:我不明白为什么Python的namedtuple类型具有_make()函数。据我所知,如果T是使用namedtuple创建的类型,那么

T._make(iterable)    and    T(* iterable)
Run Code Online (Sandbox Code Playgroud)

是同一回事。那么为什么要使用_make()函数呢?有什么我想念的吗?

python namedtuple

6
推荐指数
1
解决办法
2173
查看次数