社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

user2357112

user2357112 最近创建的主题
user2357112 最近回复了
5 年前
回复了 user2357112 创建的主题 » Python如何散列itertools。count()?

它只是继承了基于身份的默认设置 __hash__ 和 __eq__ 从…起 object .

引用 docs 对于 tp_hash :

继承:

分组:tp_hash,tp_richcompare

此字段由子类型与tp_richcompare一起继承:当子类型tp_richcompare和tp_hash都为空时,子类型同时继承tp_richcompare和tp_hash。

自从 tp_散列 和 tp_richcompare 都静态初始化为 0 , PyType_Ready 将 copy those fields 来自基类,默认为 对象 .

7 年前
回复了 user2357112 创建的主题 » python:如何输入提示类变量?

一种暗示 SomeClass 意味着值应该是 某个阶级 ,不是类变量 某个阶级 “。”什么之中的一个 某个阶级 's class variables“不是一个类型,并且没有可用于该含义的注释。

这种情况的stdlib解决方案是 enum.Enum ,但你拒绝了。在这种情况下,接下来最好的事情是 typing.Literal 类型,在Python3.8中引入。有了它,你可以写

SomeClassValue = typing.Literal['regular', 'important', 'accounts', 'special']

def do_something(*, queue_name: SomeClassValue):
    ...

你 不能 以某种方式从 某个阶级 ;它可能会运行,但不会键入check。这意味着如果你走这条路,你将不得不有很多容易出错的代码重复。(另外,您可能需要 Literal 类变量上的注释-我不知道将为这些变量推断什么类型。)

9 年前
回复了 user2357112 创建的主题 » python中意外的多运算符行为[重复]

这是一个链式的比较。你可能知道你可以

1 < 2 < 3

在python中,它相当于 (1 < 2) and (2 < 3) . (或许你没有,现在你知道了)同样的事情也适用于 in 和 == .

5 in [1, 2, 3, 4] == False

相当于

(5 in [1, 2, 3, 4]) and ([1, 2, 3, 4] == False)

自从 [1, 2, 3, 4] 不等于 False ,整个表达式的计算结果为 假 .

7 年前
回复了 user2357112 创建的主题 » python内部实现[复制]

在c python中,许多模块是用c实现的,而不是用python。你可以在里面找到那些 Modules/ ,而纯python则位于 Lib/ .

在某些情况下(例如 json module),python源代码自己提供模块,只有在c模块可用时才使用它(以提高性能)。对于其余的模块,您可以查看 PyPy's implementations .

简单地说,你就是做不到。

如上所述 Documentation ,

可以使用具有多个时隙父类的多重继承,但仅允许一个父类具有由时隙创建的属性(其他基必须具有空的时隙布局)-冲突会引发类型错误。

背后的想法 __slots__ 是为了保留特定的 槽 对于实例的内存布局中的每个属性。 A 和 B 正在尝试为 slot1 和 slot2 属性,以及 C 不能为两个属性保留相同的内存。只是不兼容。


感谢注释中的jcode,下面的方法被修改为正确的。

但总有一种方法,我个人更喜欢使用包含所有必需插槽的公共基 斯洛茨基 当存在多个继承类时是必需的。

import pympler.asizeof
class base():
    __slots__ = ['a','b']

class A(base):
    __slots__ = []

class B(base):
    __slots__ = []

class C(A,B):
    __slots__ = []

class D():
    pass

#Update
bb = base()
bb.a = 100
bb.b = 100
print(pympler.asizeof.asizeof(bb))
a = A()
a.a = 100
a.b = 100
print(pympler.asizeof.asizeof(a))
c = C()
c.a = 100
c.b = 100
print(pympler.asizeof.asizeof(c))
d = D()
d.a = 100
d.b = 100
print(pympler.asizeof.asizeof(d))

更新 这4个值是88,88,88,312。虽然 斯洛茨基 保留的。

7 年前
回复了 user2357112 创建的主题 » 无意中重写Python2.7标准模块-如何防止?

当它说“内置模块”时,这行文档指的是直接编译到python可执行文件中的模块。你可以看到里面有哪些 sys.builtin_module_names .

您需要做的是关闭隐式相对导入,这可以在每个文件的基础上使用 absolute_import 未来声明:

from __future__ import absolute_import