我是一位经验丰富的程序员,开始使用Python。我已经编写了一个简单的Python脚本,我已将其放入名为add_function.py
的文件中:
def myadd(a, b):
sum = a + b
return sum
result = myadd(10, 15)
print result
现在,当我从Python交互式解释器中获取文件时,它可以正常工作:
% python
Python 2.7.5 (default, Sep 12 2013, 21:33:34)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> execfile("add_function.py")
25
但是,复制脚本然后将其直接粘贴到解释器中时,似乎解释器无法解析空行。我发现这令人沮丧,因为其他脚本语言(例如R)不区分脚本中的空白行和交互式提示符下的空行。
>>> def myadd(a, b):
...
File "<stdin>", line 2
^
IndentationError: expected an indented block
>>> sum = a + b
File "<stdin>", line 1
sum = a + b
^
IndentationError: unexpected indent
>>> return sum
File "<stdin>", line 1
return sum
^
IndentationError: unexpected indent
>>>
>>> result = myadd(10, 15)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'myadd' is not defined
>>> print result
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'result' is not defined
如何解决此问题?我希望能够粘贴并尝试我在网站上找到的代码,其中许多代码都有空行。
答案 0 :(得分:0)
将exec
与三引号原始字符串一起使用:
exec r'''
[paste code here]
'''
如果粘贴的代码使用三引号,尤其是文档字符串,则可能需要检查并正确使用"""
或'''
。
如果粘贴的代码使用两种类型的三重引用(罕见但可能),您可以解决这个问题:
def heredoc(end='EOF'):
lines = []
while True:
line = raw_input()
if line == end:
break
lines.append(line)
return '\n'.join(lines) + '\n'
然后你可以做
>>> exec heredoc()
[paste code here]
EOF
手动输入EOF
。
答案 1 :(得分:0)