“<;=”是什么意思如何处理python集和布尔值?
我在标准库中的“<;=”是什么意思如何处理python集和布尔值?,python,shutil,Python,Shutil,我在标准库中的shutil模块中发现了一些我不理解的代码 \u use\u fd\u函数最后保存一个truthy/falsy值,其初始化如下: _use_fd_functions = ({os.open, os.stat, os.unlink, os.rmdir} <= os.supports_dir_fd and os.listdir in os.supports_fd and
shutil
模块中发现了一些我不理解的代码
\u use\u fd\u函数
最后保存一个truthy/falsy值,其初始化如下:
_use_fd_functions = ({os.open, os.stat, os.unlink, os.rmdir} <=
os.supports_dir_fd and
os.listdir in os.supports_fd and
os.stat in os.supports_follow_symlinks)
当然,由于有经验的开发人员无法在几秒钟内破译代码,因此代码太聪明了。但是它是如何工作的,它是做什么的呢?您的答案可以在以下列表中找到:
os.supports\u dir\u fd
是一组函数
在Python
和have than中,您可以在以下位置找到答案:
os.supports\u dir\u fd
是一组函数
在Python和
中,have than是Python 2中的源代码吗?在这里,将集合
与布尔值
进行比较不会引发类型错误
。我不记得规则(这是删除此类行为的部分原因),但这里发生了一些聪明的事情。我真的不明白这是怎么回事,但{lambda x:x}@juanpa.arrivillaga我读到的shutil
的路径是C:\Python35\Lib\shutil.py
。我希望是Python3.5。源代码是Python2吗?在这里,将集合
与布尔值
进行比较不会引发类型错误
。我不记得规则(这是删除此类行为的部分原因),但这里发生了一些聪明的事情。我真的不明白这是怎么回事,但{lambda x:x}@juanpa.arrivillaga我读到的shutil
的路径是C:\Python35\Lib\shutil.py
。我希望它是Python3.5。也许我的速度慢了点,但我正努力从中拼凑出原始代码的意图。你能在一个较高的层次上陈述它吗?很感谢,现在对我来说它更有意义。也许我速度慢,但我正努力从中拼凑出原始代码的意图。你能在一个高层次上表达它吗?很感激,现在对我来说它更有意义了
>>> {lambda x: x} <= True
TypeError: unorderable types: set() <= bool()
>>> {True} <= True
TypeError: unorderable types: set() <= bool()
>>> {lambda x: x} <= (lambda x: x+1)
TypeError: unorderable types: set() <= function()
>>> {lambda x: x} <= (lambda x: x+1) in {lambda x: x+1}
TypeError: unorderable types: set() <= function()
_set = set()
_add("HAVE_FACCESSAT", "access")
_add("HAVE_FCHMODAT", "chmod")
_add("HAVE_FCHOWNAT", "chown")
_add("HAVE_FSTATAT", "stat")
_add("HAVE_FUTIMESAT", "utime")
_add("HAVE_LINKAT", "link")
_add("HAVE_MKDIRAT", "mkdir")
_add("HAVE_MKFIFOAT", "mkfifo")
_add("HAVE_MKNODAT", "mknod")
_add("HAVE_OPENAT", "open")
_add("HAVE_READLINKAT", "readlink")
_add("HAVE_RENAMEAT", "rename")
_add("HAVE_SYMLINKAT", "symlink")
_add("HAVE_UNLINKAT", "unlink")
_add("HAVE_UNLINKAT", "rmdir")
_add("HAVE_UTIMENSAT", "utime")
supports_dir_fd = _set