一般来说,一元+人在Python中应该怎么做?
我问,因为到目前为止,我从未见过这样的情况:
+obj != obj
Run Code Online (Sandbox Code Playgroud)
obj通用对象在哪里实现__pos__().
所以我想知道:为什么+和__pos__()存在?你能提供一个真实世界的例子,其中上面的表达式评估为True?
当我为for循环创建索引计数时出错时我的问题就开始了,我在Python 3.4中发现了一个我不理解的行为.
> a = 1
> a =+ 2 #reversed 'plus and equal'
> a
2
> a += 2 #correct 'plus and equal'
> a
> a
4
Run Code Online (Sandbox Code Playgroud)
起初我认为这个错误本应该返回一个错误,但我开始认为反向的"加和等"逻辑可能会被解释为变量'a'等于正整数'2'.为了确认这一点,我尝试将变量设置为负整数,然后使用它来更改变量的符号.
> a =- 2
> a
-2
> a =- a
> a
2
> a = -a
> a
-2
Run Code Online (Sandbox Code Playgroud)
这一切让我想知道为什么一元运算符不需要与正在改变的整数或变量相邻.
这是大约10个动机故事,我必须通过观察几个方面来"评分"它们.第一个if语句检查故事的长度是否超过280个字符,第二个if语句检查第一个字母是否是大写字母.我想存储分数,candidscore如果坦率2的长度> 280且第一个字母是大写字母,我希望它candidscore[1]是2.
码:
candidscore = numpy.zeros(10)
for i in range(0, 9):
if lengthmot[i] > 280:
candidscore[i] =+ 1
if lengthmot[i] > 0:
if motivation[i][0].isupper():
candidscore[i] =+ 1
Run Code Online (Sandbox Code Playgroud)
问题:数组candidscore最初看起来像:array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]) 这样可行.
它检查长度是否> 280,这适用于并且数组中有几个.array([ 1., 0., 1., 1., 1., 0., 1., 0., 1., 0.]).所以这也有效
然后它应该检查第一个字母是否是大写字母,我认为它确实检查了它但它只增加了在第一个if语句之后它仍为0的分数,所以它看起来像这样: array([ 1., 1., 1., 1., 1., 1., 1., 0., 1., 1.]).
但是根据数据它/我希望它看起来像这样:
array([ 2., 1., 2., 2., 1., …