相关疑难解决方法(0)

什么是`1 ..__ truediv__`?Python有一个......("点点")表示法语法吗?

我最近遇到了一个我以前从未见过的语法,当我学习python时,在大多数教程中都没有,..符号,它看起来像这样:

f = 1..__truediv__ # or 1..__div__ for python 2

print(f(8)) # prints 0.125 
Run Code Online (Sandbox Code Playgroud)

我认为它完全相同(当然除了它更长):

f = lambda x: (1).__truediv__(x)
print(f(8)) # prints 0.125 or 1//8
Run Code Online (Sandbox Code Playgroud)

但我的问题是:

  • 它怎么能这样做?
  • 这两个点实际上意味着什么?
  • 如何在更复杂的声明中使用它(如果可能)?

这可能会在将来为我节省很多代码...... :)

python syntax operators python-2.x python-3.x

189
推荐指数
4
解决办法
1万
查看次数

访问文字属性适用于所有类型,但不适用于`int`; 为什么?

我已经读过python中的所有东西都是一个对象,因此我开始尝试不同的类型并调用__str__它们 - 起初我感到非常兴奋,但后来我感到困惑.

>>> "hello world".__str__()
'hello world'
>>> [].__str__()
'[]'
>>> 3.14.__str__()
'3.14'
>>> 3..__str__()
'3.0'
>>> 123.__str__()
  File "<stdin>", line 1
    123.__str__()
              ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
  • 为什么something.__str__()除了"一切"之外还要工作int
  • 123不是一个对象类型的int

python language-lawyer python-2.7 python-3.x

52
推荐指数
4
解决办法
2376
查看次数

访问python int literals方法

由于一切都是python中的对象,甚至是文字,我们通常被允许直接在文字上调用方法.

例如:

'hello'.upper()
Run Code Online (Sandbox Code Playgroud)

从理论上讲,对于int literals来说,似乎应该允许同样的事情

例如:

4.bit_length()
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,我不知道为什么.有任何想法吗?谢谢!

python syntax integer object literals

22
推荐指数
0
解决办法
689
查看次数

为什么2 .__添加__(3)不能在Python中工作?

整数2有一个__add__方法:

>>> "__add__" in dir(2)
True
Run Code Online (Sandbox Code Playgroud)

...但是调用它会引发一个SyntaxError:

>>> 2.__add__(3)
  File "<stdin>", line 1
    2.__add__(3)
            ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

为什么我不能使用这个__add__方法?

python methods int syntax-error

14
推荐指数
2
解决办法
480
查看次数