- 主题:增加了一个 union 语法
isinstance("", int | str)
python 现在已经很有静态语言的范了。还有这样的语法:
def fun() -> list[str]:
return list(range(10))
--
FROM 47.243.39.*
反正最近加的这些语法。我写的语法解析器不打算支持了。坚持在 async/await 之前的语法子集上。
【 在 flw (帅五进九) 的大作中提到: 】
: python 快要把自己玩死了。
--
FROM 117.24.207.*
哦哦。我写错了。-_-!!
【 在 fanjiyouyi (fanjiyouyi) 的大作中提到: 】
: return list(range(10)) 这返回的不是数字列表吗,怎么list[str]
--
FROM 117.24.207.*
这个 async/await 语法是 python 最近二十年最大的败笔。
python 应该把 greenlet 集成到主线去才对。把 threading 的实现改成基于协程,而非操作系统线程。
【 在 lokta (部落) 的大作中提到: 】
: 正在看<Manning.Python.Concurrency.with.asyncio.2022.2>的路过...
--
修改:hgoldfish FROM 117.24.207.*
FROM 117.24.207.*
python 和 js 搞 async/await 都是错的。因为这两个语言一直没有多线程的基础(js 从来不支持多线程,而 python 有 GIL)),可以毫无负担地搞多协程+多进程。
python,搞 async/await 比 js 还糟糕。
举个例子,python 支持 __add__, __getattr__ 这些运算符重载。如果在这些函数里面要调用 async 函数,要怎么办?是不是还得添加 async __add__() 的支持?类似的问题还有很多。
所以说 python 搞 async/await 是个巨大的错误。
而 c#, c++, rust, scala, kotlin 这些语言搞 async/await 是对的。因为它们历史上,或者设计上,要求直接支持操作系统线程。
这事我好像在本版讨论过很多次了。可以翻翻我以前对 coroutine 的评论帖子。
【 在 lokta (部落) 的大作中提到: 】
: 但是异步这一套东西,大家都差不多.scala, ts也是这么玩的.
: 现在很多新语言也是这个讨论.
: 所以python也是跟主流靠拢...
: ...................
--
FROM 117.24.207.*
向其它语言学习,加上 := 和 pattern match 越来越时髦。
【 在 javaboy (喝了咖啡就话多-_-;) 的大作中提到: 】
: python现在主要的问题是语法变异太快了,基础的承重设施不应该这么搞。
--
FROM 117.24.207.*
所以啊,为了支持 __abs__() 这些 magic method, python 还得发多少 pep 啊。
【 在 lokta (部落) 的大作中提到: 】
: 比如这样的:
: class A:
: async def __abs__(self):
: ...................
--
FROM 47.243.39.*
是的。不会出错。。
除非你搞运行时检查。
【 在 Scolesath (Scolesath) 的大作中提到: 】
: 第二个是不是返回值不按照指定类型,也不会出错?
--
FROM 112.47.122.*
这个可以用于函数签名:
def do_something(args: list[int]) -> str | int:
pass
这样子。
我觉得 python 往静态化走这个方向不错。
【 在 javaboy (喝了咖啡就话多-_-;) 的大作中提到: 】
: isinstance("", (int,str)) 不够用嘛
--
FROM 112.47.122.*