V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Contextualist  ›  全部回复第 5 页 / 共 8 页
回复总数  153
1  2  3  4  5  6  7  8  
2021-05-17 13:53:26 +08:00
回复了 abersheeran 创建的主题 Python 村通网 - Python -powered, cross-platform, Unix-gazing shell
过了一遍教程,是个有意思的角度,并且作者各种情况考虑得很细(因为“融合”确实会带来很多问题)。
感觉可读性是个比较大的问题,Shell 的命令一眼看过去就像个 Python 变量(而且确实有像 ls -l 这样的歧义语句),不过一个足够强大的语法高亮或许可以缓解。
另外为了深度融合加入了许多 DSL,比如我个人感觉在命令中嵌入 Python 表达式感觉完全是徒增复杂性(@(['echo', 'hello', 'world']) 这个求值后竟然还会被隐式转为命令),与之相比 f-string 原生而不会产生任何歧义。
2021-05-17 01:25:48 +08:00
回复了 abersheeran 创建的主题 程序员 迫于 Guido 不懂 Python ,我写了一个 Python 超集
很高兴能给你带来启发。如果对函数式魔改 Python 感兴趣的话,可以看看红姐( thautwarm )的东西。另外好奇这个项目名字的含义?

粗略看了一下,想问一下为什么要为了解包额外定义运算符 ||> ,而不利用 Python 自己的解包语法呢?比如你测试里的 (1, 11) ||> range 是不是可以写成 *(1, 11) |> range ?
2021-05-13 11:10:33 +08:00
回复了 Contextualist 创建的主题 分享创造 shx: 用 Python 写脚本的利器
@abersheeran 感谢提出,这两个接口是可以覆盖挺多场景。其实我自己的主要用途还是需要封装异步的接口。
然后又仔细拜读了一下文档,发现 check_call 和 check_output ( python 3.1 )竟然是先于 subprocess.run ( python 3.5 )的,看来官方倾向于整合成一个高级接口,算是牺牲便捷换取风格统一吧。
2021-05-13 10:19:41 +08:00
回复了 Contextualist 创建的主题 分享创造 shx: 用 Python 写脚本的利器
@ch2 对,Python 的 pathlib 和 shutil 已经可以进行大部分的文件操作了,但主要是调用外部命令不算方便:subprocess.run 需要预设一些参数,asyncio 的 subprocess 更是缺少一些高级封装。如果拿来日常使用还是需要写一些重复代码的。
2021-05-03 10:03:43 +08:00
回复了 aaatches 创建的主题 macOS 请问大家有什么方法可以传输大文件到 ios 里面?
#2 提到的 Documents 这个 App 里有个内建的连接配对电脑浏览器的功能,就局域网内传输,挺方便。有进度条。我自己用传过百来 M 的文件,没试过更大的了。
2021-03-30 05:17:48 +08:00
回复了 zictos 创建的主题 Python Python 读写文件时不用 with 也不关闭文件,这样的风格好吗?
@geelaw 虽然现在的 Python 里并没有这样的语法,但是其实 with 上下文里用 for 循环(即显式指定任何情况下跳出循环都需要 clean up )还的确是个常见的模式(例如 Trio 里的 channel: https://trio.readthedocs.io/en/stable/reference-core.html#clean-shutdown-with-channels )。如果真的是常见模式并且不考虑将语法变得冗杂,不妨提议 Python 加个 for ... in with ...: 的语法 😄
2021-03-28 02:17:50 +08:00
回复了 zictos 创建的主题 Python Python 读写文件时不用 with 也不关闭文件,这样的风格好吗?
@ipwx 啊,感谢提出!仔细研究了一下,这个情况其实也是出于对 gc 机制的利用。如果你试着把这个生成器实例赋给一个变量(避免 gc ),然后再调用它,像这样:
it = iter_lines([1,2,3])
for l in it:
  if l == 2:
     raise ValueError('xxx')

finally 就不会被触发。你的例子中,finally 执行的原因是生成器实例在 for 循环后被 gc 了,Python 的实现要求没执行完的生成器被 gc 时必须执行 finally,详见 https://docs.python.org/3/reference/expressions.html#yieldexpr

至于 contextlib.contextmanager,那是因为 Python 的库将 with 捕获的异常手动传入了生成器,详见 https://github.com/python/cpython/blob/7990072999b7e9b4ef6b1f6bb376d441a5a41d74/Lib/contextlib.py#L135
2021-03-28 00:06:55 +08:00
回复了 zictos 创建的主题 Python Python 读写文件时不用 with 也不关闭文件,这样的风格好吗?
@zictos #22 pathlib 不会提供像 @ipwx #24 描述的文件迭代器。考虑一下下面的代码:
try:
for l in iter_lines('test.txt'):
print(l[100])
except:
pass

如果 for 循环里的语句抛出了异常,程序会继续执行,但是因为 iter_lines 生成器没有执行完,里面的文件不会被关闭。问题的根本原因是:没有办法能 自动 将外层的异常传递进入内层。这就是上下文管理器 / with 语句设计要解决的问题之一。用 with open,如果 for 循环里的语句抛出了异常导致跳出了 with 的范围,文件会被自动关闭。
2021-03-27 12:41:39 +08:00
回复了 zictos 创建的主题 Python Python 读写文件时不用 with 也不关闭文件,这样的风格好吗?
如果只是一次性读 / 写,建议使用 pathlib:
from pathlib import Path
Path('test.txt').write_text('123', encoding='utf-8')
text = Path('test.txt').read_text(encoding='utf-8')

这些方法都是自带关闭文件的。
2021-03-22 13:08:35 +08:00
回复了 mimzy 创建的主题 Python Python 如何高效地将 JSON 反序列化为对象
不需要参数校验的话,可以试试 attrs + cattrs 。我自己在用这个方案,但是是用来反序列化配置文件的,所以没有考虑性能。另外 pydantic 我没用过,没有发言权。据 pydantic 作者自己说估计 attrs 能更快: https://github.com/samuelcolvin/pydantic/issues/1459#issuecomment-622045131
2021-03-20 04:33:46 +08:00
回复了 Contextualist 创建的主题 全球工单系统 一张无法在微信里发送的 GIF
@eason1874 谢谢测试!那有可能是 iOS 端的问题,我是 iOS 端微信版本 8.0.2 。
(以下内容与本帖关系不大)
@no1xsyzy 啊,个人感觉人类目前对语言的本质和大脑的工作原理都理解得太少了。

科学理论说白了就是:基于一个或多个假设,演绎出一套自洽的系统,而后,如果这套系统能解释我们在世界中观测的结果,那很好。与之相比,(我感觉)人们日常的思考会更倾向于使用归纳而非演绎。这是我对你所指的科学的“非人性化”的理解。因此当科学发展到需要用来解释日常观测不到的现象(接近光速的运动和原子层面的尺度)时,用归纳法来理解就会有些难度。
@no1xsyzy 哈哈,没想到能在这里遇见正经的语言学讨论。作为多数人的语言(如中文、英文)的使用者,我们的确容易将自己语言中的许多句法和语法规则想当然地推导到其他语言。语言对人的思维方式有着更深的影响。

那个包含其传统医学体系的语言莫非是 The Linguists 那部纪录片里提到的 Kallawaya ?

另外想补充一下,其实早在上个世纪就有各种出于不同目的的实用人工语言的探索,推广的阻力基本上都是由于大家更习惯使用自己的母语和已经被广泛使用的自然语言。让我印象比较深的是以词汇中立和减少歧义表达为目的的逻辑语( Lojban )。
借助一个通用语言作为翻译的桥梁并不能解决语言间差异的问题。如果把所有语言的词汇(假设有 N 个)放在一个超高维度的空间,通用语言的词汇就像是这些词汇的 K-means clustering 的中心点。中心点为 N 个时就是现在的翻译系统,中心点小于 N 个时就会同时牺牲表达能力和互译的精确度。另外,有些语言间的差异远超过词汇层面的差异,比如有的语言的一些独特句子结构是很难用另一个语言表示的。

@no1xsyzy 作为接收信息的工具的话,感觉 “X -> a 永远可行” 稍微实际一点;作为一个交换信息的系统,“a -> X 是永远可行” 则是一个表达能力弱且不精确的系统。
2021-03-08 14:03:50 +08:00
回复了 Contextualist 创建的主题 Python 最近发现 defaultdict 的一个奇技淫巧
@no1xsyzy 好观点。查了一下,这样(在 CPython 中)似乎的确不是线程安全的,因为如果工厂函数是 Python 代码,调用它的这个动作就是一个线程切换点。详见 https://stackoverflow.com/a/17682555,按照这个回答的提示,或许下面这个不优雅写法能行?
ind = defaultdict()
ind.default_factory = ind.__len__
2021-03-07 11:14:43 +08:00
回复了 Contextualist 创建的主题 Python 最近发现 defaultdict 的一个奇技淫巧
@iConnect @laoyuan
就 CPython 来说,defaultdict 和 dict 的实现几乎是一样的,前者只是多了个处理键值缺失的方法(__missing__)。这就意味着:1) 如果查找的键存在,其效率和 dict 一样; 2) 否则调用 len ( O(1),因为这是对象自己维护的一个属性),并插入一对值。
2020-09-10 05:03:29 +08:00
回复了 honjow 创建的主题 macOS BigSur 下目前可行的单键切换输入法方案
@honjow 他们官网链接里的信息或许更有用些: https://karabiner-elements.pqrs.org/docs/macos-big-sur/
我自己没试过,祝你好运了!
2020-09-10 02:46:39 +08:00
回复了 honjow 创建的主题 macOS BigSur 下目前可行的单键切换输入法方案
Karabiner 的作者正在用 DriverKit 写新版本( Big Sur 可用): https://github.com/pqrs-org/Karabiner-DriverKit-VirtualHIDDevice
@honjow 要不要试试毒。
2020-06-23 04:53:44 +08:00
回复了 gcyrn 创建的主题 Apple macOS 怎么也用圆角矩形了
@gcyrn 确实,比如 Safari 加个框框倒没有原来那么清爽了。哈哈,看久了就顺眼了。乔布斯:让我们告诉用户他们想要什么
2020-06-23 03:31:13 +08:00
回复了 gcyrn 创建的主题 Apple macOS 怎么也用圆角矩形了
@gcyrn 嗯,我感觉之前 macOS 锐利风格的图标潜在语言是“专业、工具、技术”,iPadOS 圆角那一套的语言是“创作、交互、人性化”(所以目前个人觉得 Logic Pro 、FCX 等专业工具新圆角图标比较不适应)。这样看的话 macOS 规划的受众是想要进一步拓宽了。(或者纯粹只是认为高度一致的设计语言更重要?唉,怀念和而不同的时代)
1  2  3  4  5  6  7  8  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1058 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 24ms · UTC 19:08 · PVG 03:08 · LAX 11:08 · JFK 14:08
Developed with CodeLauncher
♥ Do have faith in what you're doing.