是否有包含我们可能经常遇到的所有标点符号的列表或库?
通常我使用string.punctuation
,但其中不包含一些标点符号,例如:
>>> "'" in string.punctuation
True
>>> "’" in string.punctuation
False
Run Code Online (Sandbox Code Playgroud) 使用时,sizeof
我总是将它括在括号中,因为它对我来说更容易阅读,即使有时我可以省略它,在下面的第一种情况下
sizeof unary-expression
sizeof ( type-name )
Run Code Online (Sandbox Code Playgroud)
我的问题是括号如何消除编译器的歧义?什么是这样的例子:
sizeof char
Run Code Online (Sandbox Code Playgroud)
对编译器来说会模棱两可吗?
我想强制列表中的所有项目都是 type x
。什么是最好的方法来做到这一点?目前我正在做如下断言:
a = [1,2,3,4,5]
assert len(a) == len([i for i in a if isinstance(i, int)])
Run Code Online (Sandbox Code Playgroud)
int
我要在这里强制执行的类型在哪里。有一个更好的方法吗?
我经常会编写一个通用异常,如下所示:
class MyException(Exception):
"My custom exception."
pass
Run Code Online (Sandbox Code Playgroud)
这样我就可以检查该异常是否是我想要的异常(例如块)try/except
。然而pylint
对此的抱怨如下:
不必要的通行证:不必要的通行证声明
这项投诉背后的理由是什么?是否有更优选的方法来执行上述操作?即使 python 文档也建议对用户定义的异常使用类似的东西:
class Error(Exception):
"""Base class for exceptions in this module."""
pass
Run Code Online (Sandbox Code Playgroud) 如何在 Mac 上查看应用了所有格式的剪贴板?例如,如果我在 Excel 中复制粘贴表格,它不仅会复制文本,还会复制格式(我相信它会将其作为 html 对象复制到剪贴板)。我会如何看待这一点?我发现的最接近的是Finder Clipboard
orpbcopy
但它似乎只显示原始文本,没有实际的辅助格式。换句话说,我想查看剪贴板中的文字数据,而不仅仅是粘贴到纯文本编辑中的文本。这怎么可能做到呢?
# this data should have formatting...
$ pbpaste
2019 Q1
2018 Q1
Run Code Online (Sandbox Code Playgroud) 我想提出一些理论问题。
假设我有一个无限滚动,实现了如下所述的内容:https : //medium.com/frontend-journeys/how-virtual-infinite-scrolling-works-239f7ee5aa58。没什么好看的,说它是一张数据表,比如说NxN就够了,用户可以向下和向右滚动,就像电子表格一样,它只会显示当前视图中的数据加减一个处理。
现在,我们还假设在该视图中“获取和显示”数据大约需要 10 毫秒,使用如下函数:
get_data(start_col, end_col, start_row, end_row);
Run Code Online (Sandbox Code Playgroud)
当单击滚动条中的某处或执行“轻微滚动”以呈现必要的数据时,这会立即加载。但是,我们还假设对于每个“未完成的获取事件”,呈现必要的视图数据所需的时间加倍(由于内存、gc 和其他一些原因)。因此,如果我以缓慢的故意方式从左到右滚动,我可能会生成 100 多个滚动事件,这些事件会触发数据加载——起初明显延迟为零。获取在 10 毫秒内发生,但很快就开始需要 20 毫秒,然后是 40 毫秒,现在我们有一个明显的延迟,直到加载必要的数据超过一秒。此外,我们不能使用诸如去抖动/延迟之类的东西,
我需要考虑哪些因素以及实现此目的的示例算法是什么样的?这是我希望对数据进行的用户交互示例,假设有一个 10000 x 10000 的电子表格(尽管 Excel 可以一次加载所有数据)——https://gyazo.com/0772f941f43f9d14f884b7afeac9f414。
ctx
Python AST 表示中的参数是什么?例如:
>>> print(ast.dump(ast.parse('-a')))
Module(body=[Expr(value=UnaryOp(op=USub(), operand=Name(id='a', ctx=Load())))])
Run Code Online (Sandbox Code Playgroud)
换句话说,这ctx=Load()
意味着什么或做什么?我从文档中看到的唯一信息是 ctx 可能是以下之一:
expr_context = Load | Store | Del | AugLoad | AugStore | Param
Run Code Online (Sandbox Code Playgroud)
https://docs.python.org/3.7/library/ast.html。有人可以解释一下各种情况expr_context
以及它们的作用吗?我想 lhs 和 rhs 是存储/加载:
>>> print(ast.dump(ast.parse('b=-a')))
Module(body=[Assign(targets=[Name(id='b', ctx=Store())], value=UnaryOp(op=USub(), operand=Name(id='a', ctx=Load())))])
Run Code Online (Sandbox Code Playgroud)
但除此之外,还有哪些其他选择?
更新:另外,是的,还有另一个与此类似的问题,Python AST:几个语义不清楚,例如 expr_context,但接受的答案以 开头,"After some more testing and guessing:..."
并且它在细节上相当简单(至少可以说)。我希望真正了解该ast
模块的人可以提供更全面的答案。
从正则表达式文档它说:
模式.匹配(...)
如果字符串开头的零个或多个字符与此正则表达式匹配
Pattern.fullmatch(...)
如果整个字符串匹配这个正则表达式
模式.search(...)
扫描字符串以查找此正则表达式产生匹配的第一个位置
鉴于上述情况,为什么有人不能总是习惯于search
做所有事情?例如:
re.search(r'...' # search
re.search(r'^...' or re.search(r'\A...' # match
re.search(r'^...$' or re.search(r'\A...\Z' # fullmatch
Run Code Online (Sandbox Code Playgroud)
是match
和fullmatch
刚才的快捷方式(如果他们可以被称为是)的search
方法?或者它们还有我忽略的其他用途吗?
我希望创建一个正则表达式,它允许一个或两个单词边界,但不能为零。
例如,对于单词term
:
a term is
<-- 是的,前后空格(两个边界)the terms are
<-- 是的,前面有空格(一个边界)the midterm was
<-- 是的,后面的空格(一个边界)the midterms were
<-- 否(零字边界)会是最好的正则表达式吗?我最初的想法是:
\bterm|term\b|\bterm\b
#(没有?
打开\b
)但这似乎太冗长了。什么可能是更好的?
当谈到 时Generics
,python 给出了以下示例:
from collections.abc import Sequence
from typing import TypeVar
T = TypeVar('T') # Declare type variable
def first(l: Sequence[T]) -> T: # Generic function
return l[0]
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下TypeVar
这种情况下的作用吗?例如,如果它可以是任何东西,为什么不直接赋予它值呢Any
?如果它受到限制,为什么不给它一个Union
值呢?换句话说,使用有什么用处TypeVar(...)
?
我想在回顾上面的内容时,它是在某种子元素的元素时使用的?例如,它可以是:
[{set1}, {set2}, {set3}, ...]
Run Code Online (Sandbox Code Playgroud)
那种类型是Sequence[set] -> set
但像这样的事情:
[1, 2, 3, ...]
Run Code Online (Sandbox Code Playgroud)
会有类型Sequence[int] -> int
。除了这个“item-in-iterable”之外还有其他用法吗?
python ×6
python-3.x ×2
regex ×2
algorithm ×1
c ×1
canvas ×1
clipboard ×1
copy-paste ×1
javascript ×1
macos ×1
performance ×1
pylint ×1
string ×1
unicode ×1
unix ×1