V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  O5oz6z3  ›  全部回复第 3 页 / 共 5 页
回复总数  100
1  2  3  4  5  
2021-09-23 17:23:29 +08:00
回复了 chaleaoch 创建的主题 Python Python 序列化问题请教
偶然看到 https://hynek .me/articles/serialization/
2021-09-09 00:06:20 +08:00
回复了 sujin190 创建的主题 Python 分享一下完全不依赖 asyncio 也支持异步语法的库
@caicaiwoshishui #45 问得好,这个问题,我也不会,有请真正的大佬指点……

@ysc3839 #36 补充一下,虽然不靠谱,稍微改了改糊了一个实现:
from asyncio import Future, Task, set_event_loop, AbstractEventLoop
from collections import UserList

class Loop(UserList, AbstractEventLoop):
...def call_soon(self, callback, *args, context=None):
......self.append(lambda: callback(*args))
...def get_debug(*_): pass
...__hash__ = lambda x:id(x)

callback_list = Loop()
set_event_loop(callback_list)
......
Task(test())
Task(test())
......
2021-09-08 21:30:29 +08:00
回复了 sujin190 创建的主题 Python 分享一下完全不依赖 asyncio 也支持异步语法的库
@ysc3839 #36 虽然我不是很懂 asyncio 和 C++,也不知道你的需求要怎么实现,但我猜你的 python 代码出错是因为你用了 asyncio.Future 。`Future(loop=None)` 要么默认绑定 asyncio 的事件循环,要么你传进去一个自定义 loop,这个 loop 的接口要兼容 asyncio 的 eventloop,大概像是 #41 楼说的那样?

而且 `async def test():...; test()` 本来也无法直接运行,大概需要这样运行 `asyncio.Task(test(), loop=None)`?

以下是个人理解。如果你要借用 async/await 语法糖,就要实现一个兼容 async-function/coroutine 的事件循环,也就是 asyncio 的工作,相当于 js 自带的事件循环。

虽然不知道要怎么实现 sync-callback 结合 async/await,个人理解就是 #19 楼那样,async 语法是用来等待 io 的,asyncio.sleep 就是模拟 io,所以也很好奇在没有 io 的情况下要怎么用 async 语法代替回调地狱。(顺便一提,上次在 /790207#90 的时候我的确说错了,py 协程可以是异步生成器,支持随意 suspend resume )
2021-09-02 18:21:48 +08:00
回复了 abersheeran 创建的主题 Python 我自己写的 Python 超集语言发布了能用的版本
好家伙,血糖拉满。稍微跑个题……虽然看不懂 pegen 的语法,但感觉用途广泛,似乎语法糖、超集、DSL 、多国语言本地化、抛弃游标卡尺都能更容易实现,感觉这个自由度有点夸张?
2021-09-02 18:14:48 +08:00
回复了 superhxl 创建的主题 Python 如何在 Python3 中对列表 通过比较排序(不懂就问)?
想到一个麻烦的做法:
def cmp(a, b):
  lt = val.get((a,b))
  if lt == 1:
   return -1
  gt = val.get((b,a))
  if gt == 1:
   return 1
  return -1 if a<b else 1 if a>b else 0
感觉像 #10 楼那样将 val 换成 set(val.keys()) 也没有问题。这个自定义排序似乎可以再加些功能,比如优先度排序?
@cnrting #36 宏观韭菜盒子确实需要根据食谱调度韭菜来制作,就做菜而言,食材韭菜确实不具有“主观能动性”……将程序命名为“韭菜粒子”搞不好很有噱头……


再顺带一提,后来找了些资料,发现上面一些观点其实早就被人讨论过了:
1. “宇宙是否运行时”(大邱奇-图灵论题),本帖是“现实世界对应数据世界”的逆命题。不过运行时是串行的,宇宙是并行的。
2. “时空的本质如何观测”(空穴论证和绝对时空),不知道是不是莱布尼兹说的,时空只有在观测物质与运动的时候才具有意义。
3. 巧合的是,“cpu 时间片”本来就叫做量子 /quantum,虽然不知道原因。
2021-08-30 19:21:24 +08:00
回复了 imn1 创建的主题 Python 有没有办法 hash 一个 object?
没做过,想到几个麻烦的思路,权当参考。
1. 用环境变量 pythonhashseed 固定 hash()的结果,但是未必可靠。
2. 感觉本质上和 #5 楼说的一样,根据你的具体情况来决定将函数的哪些属性作为特征来哈希。比如说,包含函数的源码行数与文件位置、函数名、参数签名等等。

将函数的几个属性转为元组也能直接用作哈希,或者进一步将元组用 str()字符串化后再用 md5 之类的哈希函数。
如果用字典,就 json.dumps(sort_keys=True)之类的(没用过但听说还有 frozenset(dict.items())、deepdiff.DeepHash(dict)[dict]、frozendict 之类的)
@easing #34 确实如此,正因为现实的底层运作无法观测,所以只能进行形而上的思考,就这一点而言,我们简直就像是无法访问沙箱底层的程序一样。

人脑的运作原理确实很像计算机(或者反过来说计算机像人脑),但是这个对应又回到宏观尺度了。至于殇增殇减信息论这些概念,就是书到用时方恨少了……

不过顺带一提,之前提到的“能量即调度方式”,让我想到了另一个假设:现实能量相似于数据世界的“cpu 时间片”,基于这个假设,能量和时间就可以互相转换,细思恐极……
@easing #32 如果是说“靠谱”的话,在标题中已经说明本帖讨论的前提是(科幻)“脑洞”,所以数据比作粒子尚算合理。而“物理规则”这个无形之物,规则运作的原理不明,与数据、粒子、运行时这些可被观测的“有形之物”是有区别的。

虽然我不懂哲学上的存在与时间,“时间赋予了其意义”也没错,甚至可以说是根本性的前提,但是“时间”这个无形无定论的不明之物我也不知道要怎么讨论。不过“时间”确实是我没有考虑到的方面,甚至可以说“运行时”本身就相当于静止的数据世界的“时间”。

关于“自由运动”这一点,我还没想好该怎么准确地定义,我不是指因果上、意志上、随机的那种自由,而是指独立的、自立的那种不需要依靠外界的自由,比如说程序依靠运行时,而粒子在现实中运动不需要“运行时”,只是粒子的运动规律符合物理定律罢了。
@easing #29
1. 将宇宙视为运行时,我也这么想过,但是将能量视为物质的调度方式 /策略,这个概念有点抽象,我尚在理解中。
2. 我之所以强调运行时,是因为这是程序与物质最明显的区别,我也想过将宇宙也比作运行时,但是这一点缺乏事实根据,异想天开的观点不方便讨论。
至于你所说的“程序才是粒子”,我的理解是,在数据层面再抽象一层“粒子层”,每个“粒子对象”包含数据和程序。这样虽然没问题,但我想着眼于更底层一些,例如说数据存放在“内存空间”中,程序也作为数据存放在内存,内存空间里放置的是数据,数据可以视作内存空间的“粒子”,每个“数据粒子”都由 01 两种基本元素构成。

@lscho #30 是啊,现实中所有东西都能运动,但在数据世界中,数据不能运动,只有程序才能“运动”,所以想问有什么将数据和程序对应现实的恰当类比。
2021-08-24 21:30:50 +08:00
回复了 MiketsuSmasher 创建的主题 Python 如何把 Java properties 转换为具有层级结构的字典
@MiketsuSmasher #22 好主意,我看到过 setuptools 也是用这种写法
2021-08-24 18:53:13 +08:00
回复了 MiketsuSmasher 创建的主题 Python 如何把 Java properties 转换为具有层级结构的字典
有点麻烦,`java.vendor = N/A` 有子节点,`java.vendor.url = ……/openjdk.java.net/` 有复数行。
如果不考虑那么多,贡献一个 py 大致思路,不保证对:用 configparser 读取 ini 格式的数据变成字典(有个参数允许同键名的复数行),遍历字典(for key, value in dict.items()),将键名按点分割(key.split(".")),遍历分割后键名的每个层级,用 dict.setdefault(parentkey, dict())初始化每个层级,最后赋值。
最近在哪见过类似的格式,不过想不起来了。
@easing #27 我的确说错了,布朗运动和裂变都不能算自发,只有衰变(应该)算是自发,这点我在 #26 楼里订正了。至于四大基本力,我也没想那么远,我想的只是粒子只需要有能量有相互作用就能“自己”运动起来,不需要通过运行时“计算”出来。
关于元胞自动机,如果我没理解错的话,元胞自动机的每个时刻都是需要“运行时”计算出来的,而自动机每个方格的状态也是作为数据储存在内存里,能量的传递和交互规则都需要依靠运行时计算出来,所以本质上似乎和冯·诺伊曼结构没有区别?
我也同意“不存在没有能量和交互就自由运动的个体”,所以数据和程序数据都没有能量也无法相互作用,自然就无法自由运动,需要依靠运行时来“驱动”。
@O5oz6z3 #24 订正一下,两个例子不恰当:布朗运动不是自发的,裂变也不是自发的。
所以关于自由运动这一点,应该举例静止的粒子被碰撞后的这一刹那,静止的粒子自己开始了运动,而不是经过运行时调度驱使粒子“移动”。
2021-08-24 06:34:30 +08:00
回复了 pocarisweat 创建的主题 程序员 看到「学什么新语言」这个问题,推荐这本书
一个想法,不一定对。编程语言就和球类运动似的,球类运动也分乒乓球、网球、桌球、排球、保龄球、篮球、足球、棒球、橄榄球、高尔夫球……
2021-08-24 06:29:08 +08:00
回复了 qisuker 创建的主题 Python 《 Python 进阶》2021 更新版发布,欢迎大家提出意见或表示支持
@AX5N #13 py 之父,这怎么比……
我举的例子不太恰当,因为病毒和机器都有点宏观了,我更想要的是微观上的对应。

更正一下描述,数据由 01 这两个基本元素原子构成,数据是基于 01 的排列。
所以数据应该对应的是分子,分子基于原子的排列,最形象的例子就是 DNA 分子(#5 )。
@dawn009 #2 没错,可是假设数据对应粒子,那么可执行的数据又对应什么?特权粒子?这就是我迷惑的地方。

@ddzzhen #3 你发现了盲点,我描述的问题确实有点像是因果关系。

@blackcurrant #5 你这么一提我才发现病毒本质上也是 dna,而 dna 本来就是代码 /编码 /程序……

@TOUJOURSER #7 是我说得宽泛了,我本来所说的“能源”指的是广义上电力、水力、人力这类的动力源,而非狭义上泛指所有物理能量。不过你这一说,能量就是万物运动的前提,没有能量就会像数据一样静止不变,有点像是执行权转让……

@banmuyutian #8 过奖,我相信距离诺贝尔奖就差一个理论物理学家了

@maplerecall #14 关于自由运动,我的定义是“变动”:数据自身不可能变动,除非硬件出错。粒子自身可以布朗运动变动坐标,或者自发衰变裂变,甚至……波函数坍缩?

@0312birdzhang #17 某种意义上没错,可以追溯到一切因果的源头……

@easing #20 哲学我就不懂了,我也没想到那么形而上的层次……我想说的自由运动,指的是粒子不需要运行时也可以自发布朗运动 /衰变裂变,但是程序必须有运行时调度才能进行“运动”。粒子不需要执行权不需要被调度,这就是自由运动。不过如果说万物皆程序的话,那么宇宙就成了一个虚拟机,我们就是无法逃逸沙箱的程序,也就是黑客帝国?
@imdong @cedoo22 @liamzz @ns20 @paopjian @iOCZ @ #1 #10 #12 #15 #16 #18 #22
很扣题,但是举的例子太宏观了……

@zmxnv123 #9 天下嚷嚷皆为利往,好句好句……
@abersheeran #17 超集的确会语法更灵活,但实现难度也高很多……

顺带一提找到了一个库 ideas 似乎能较简单地自定义语法糖,比如替换 lambda 关键字:github.com/aroberge/ideas
1  2  3  4  5  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   787 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 20:12 · PVG 04:12 · LAX 13:12 · JFK 16:12
Developed with CodeLauncher
♥ Do have faith in what you're doing.