在Java或C中,我们将<condition> ? X : Y其转换为Python X if <condition> else Y.
但也有这个小技巧:<condition> and X or Y.
虽然我明白,这是相当于前述三元运营商,我觉得很难把握如何and和or运营商能够产生正确的结果.这背后的逻辑是什么?
我只是改进了一个必须支持切片的库的测试覆盖率,我注意到切片可以包含非整数类型:
>>> slice(1, "2", 3.0)
slice(1, '2', 3.0)
>>> sl = slice(1, "2", 3.0)
>>> [1,2,3][sl]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: slice indices must be integers or None or have an __index__ method
Run Code Online (Sandbox Code Playgroud)
这可能只是我的静态输入背景,但对我来说,似乎很奇怪__index__没有a 的内置类型可以在这里传递TypeError.为什么会这样?我是否正确假设允许任意类型以支持实现类型的鸭子类型__index__?由于最常用案例的性能原因,是否缺乏类型检查?
在PEP 357之前,示例中的切片无效吗?
我正在进行Python挑战,但在任务6中我遇到了一些问题:
comments = []
comments.append(file_zip.getinfo('%s.txt'%name).comment)
print(''.join(comments))
Run Code Online (Sandbox Code Playgroud)
但这给了我错误:
TypeError:序列项0:预期的str实例,找到的字节
我寻找答案,并尝试这样:
print(b''.join(comments))
Run Code Online (Sandbox Code Playgroud)
它工作和打印:
b'***************************************************************\n****************************************************************\n** **\n** OO OO XX YYYY GG GG EEEEEE NN NN **\n** OO OO XXXXXX YYYYYY GG
GG EEEEEE NN NN **\n** OO OO XXX XXX YYY YY GG GG EE NN NN **\n** OOOOOOOO XX XX YY GGG EEEEE NNNN **\n** OOOOOOOO XX XX YY GGG EEEEE NN **\n** OO OO XXX XXX YYY YY GG GG EE NN **\n**
OO OO XXXXXX YYYYYY GG GG EEEEEE NN …Run Code Online (Sandbox Code Playgroud) 我需要使用 Python 3 解码一个按以下方式编码的字符串:
>>> s = numpy.asarray(numpy.string_("hello\nworld"))
>>> s
array(b'hello\nworld',
dtype='|S11')
Run Code Online (Sandbox Code Playgroud)
我试过:
>>> str(s)
"b'hello\\nworld'"
>>> s.decode()
AttributeError Traceback (most recent call last)
<ipython-input-31-7f8dd6e0676b> in <module>()
----> 1 s.decode()
AttributeError: 'numpy.ndarray' object has no attribute 'decode'
>>> s[0].decode()
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-34-fae1dad6938f> in <module>()
----> 1 s[0].decode()
IndexError: 0-d arrays can't be indexed
Run Code Online (Sandbox Code Playgroud) 我正在阅读Think Python:如何像计算机科学家一样思考.笔者使用"援引"与方法和"呼"与功能.
这是一个惯例吗?如果是这样,为什么要做出这种区分呢?为什么称函数被调用,但据说可以调用方法?
在我从python 3.5升级到python 3.6之前,这个工作:
import typing
issubclass(list, typing.List[int]) # returns True
isinstance([1, 2 ,3], typing.List[int]) # returns True
Run Code Online (Sandbox Code Playgroud)
现在在python 3.6中,这两个都引发了以下异常:
TypeError: Parameterized generics cannot be used with class or instance checks
Run Code Online (Sandbox Code Playgroud)
这是新的预期行为还是错误?如果打算如何执行检查,上面的代码在python 3.6中进行?
在 Python 中,异步生成器函数是协程,生成器函数也是协程。
生成器函数和异步生成器函数的用途有什么区别?
谢谢。
作为 Python 中的菜鸟,我在第 3 版中打印了列表的所有元素,经过全面研究后,我找不到对这种行为的解释。
但是,我知道每个函数都必须返回一些值,并且当它未定义时,函数返回“Null”(或 Python 中的“None”)。但是为什么在这种情况下,在正确打印所有元素后,它会为另一个列表中的每个元素打印“无”?
>>> a_list = [1,2]
>>> a_list
[1, 2]
>>> [print(f) for f in a_list]
1
2
[None, None]
Run Code Online (Sandbox Code Playgroud) 这里针对1.3.4版本的sphinx-doc拿破仑Google风格文档字符串示例显示函数/方法的可选参数应记录如下:
param2 (str, optional): The second parameter. Defaults to None.
Second line of description should be indented.
Run Code Online (Sandbox Code Playgroud)
但由于版本1.4a0同一页面这里显示了以下的方式做同样的事情:
param2 (Optional[str]): The second parameter. Defaults to None.
Second line of description should be indented.
Run Code Online (Sandbox Code Playgroud)
但是我没有在文档中看到对这种新语法的任何解释.在哪里可以找到有关使用sphinx-doc的拿破仑扩展的Google风格文档字符串支持的新语法的更多信息?
deconstructiblePython 中的装饰器有什么作用?我遇到了这个装饰器,正在查看其他人的代码,但是我搜索了Python文档,却找不到该装饰器的实际功能?
@deconstructible
class UserValidator(object):
def __call__(self, value):
if value:
etc
Run Code Online (Sandbox Code Playgroud)
给定上面的代码,对此类添加'deconstructible'有什么作用?
python ×10
python-3.x ×8
string ×2
asynchronous ×1
coroutine ×1
django ×1
function ×1
list ×1
methods ×1
mypy ×1
numpy ×1
oop ×1
python-3.6 ×1
slice ×1
syntax ×1
type-hinting ×1
typing ×1