示例20:艰苦地学习Python
我试图找到有关+=在Python中的作用的信息,但找不到任何让我满意的信息。例如,在研究练习20中,他要求您使用+=”重写脚本。即使只是一个小例子,说明它能做什么或它能取代什么,也会很有帮助。我怎么能重写这个示例20:艰苦地学习Python,python,Python,我试图找到有关+=在Python中的作用的信息,但找不到任何让我满意的信息。例如,在研究练习20中,他要求您使用+=”重写脚本。即使只是一个小例子,说明它能做什么或它能取代什么,也会很有帮助。我怎么能重写这个 from sys import argv script, input_file = argv def print_all(f): print f.read() def rewind(f): print f.seek(0) def print_a_line(line,
from sys import argv
script, input_file = argv
def print_all(f):
print f.read()
def rewind(f):
print f.seek(0)
def print_a_line(line, f):
print line, f.readline()
print "Here is the file: %r" % input_file
current_file = open(input_file)
print_all(current_file)
print "Now let's start from the beginning..."
rewind(current_file)
print "Here are the first three lines of the file:"
current_line = 1
print_a_line(current_line, current_file)
current_line = current_line + 1
print_a_line(current_line, current_file)
current_line = current_line + 1
print_a_line(current_line, current_file)
current_file.close()
+=
运算符意味着向现有变量添加一些内容n+=2
与n=n+2
在您的示例中,不要使用
current\u line=current\u line+1
,而是使用current\u line+=1
从字面上解释了+=
在本页上的含义
问:什么是+=
你知道我怎样用英语把“它是”改写成“它是”吗?或者我可以把“你是”改写成“你是”?在英语中,这被称为收缩,这有点像两个操作的收缩=
和+
。这意味着x=x+y
与x+=y
相同
+=是。你可以把句法上的糖分看作是一种额外的东西,使事情变得更简单,或者更清楚
这个特殊的语法糖块用于向现有变量(左侧的变量,也称为左值)添加值(右侧的值,也称为右值)
你可以写
variable += 1
作为
对口译员来说也没什么不同。您也可以对其他操作符执行相同的操作
var -= 8 # Subtracting
var *= 3 # Multiplication
var %= 2 # Modulus (Remainder of division)
var /= 4 # Division
或者你根本不可能。无论您认为什么,都会使代码清晰、易于理解和键入。这确实是一种偏好。我通常会坚持使用一种或另一种类型,因为使用多种编程风格往往会造成混淆
n+=1
相当于n=n+1
有一个打字错误,我的错没有什么不同?将timeit('a=a+[0]','a=[]')
与+=
版本进行比较。@StefanPochmann-可能意味着“基本变量没有不同”优化被高估了。程序员的时间几乎总是更有价值的。除非给出一个很好的理由,否则您很少应该考虑让代码更快。大多数编译器/解释器可以为您更好地完成这项工作。我想看看.pyc示例的比较,因为它们已经经过了优化。@NickYoung不确定您是否认真。你是真的尝试过我的例子,还是因为你认为自己知道得更好而忽略了它?在任何情况下,重点不是优化,而是证明存在明显的实际差异。这两种说法可以做完全不同的事情。好吧,考虑到你在我提问几分钟后才回答了我的问题,我相当肯定你没有尝试我的例子。因为在我的电脑上,这大约需要80分钟(相比之下,+=
版本需要0.0036秒)。但是,重点不是优化,而是显示出明显不同的事情正在发生。
var -= 8 # Subtracting
var *= 3 # Multiplication
var %= 2 # Modulus (Remainder of division)
var /= 4 # Division