Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
示例20:艰苦地学习Python_Python - Fatal编程技术网

示例20:艰苦地学习Python

示例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,

我试图找到有关+=在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, 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