Python是一种解释型语言,因此它逐行执行代码,因此当我运行时
import csv,re,sys
print len(sys.argv)
if(len(sys.argv)!=2):
sys.exit(0)
filename= #from command line argument
它甚至不会执行一行并给出语法错误。
现在我的问题是代码的最后一行有错误,但python解释器逐行执行代码,所以直到最后一行的代码是正确的所以它应该执行代码到最后一行,但它给了我低于错误,而不是我在第2行中定义的sys.argv的打印长度
File "trace-analysis.py", line 45
filename = # from command line argument
SyntaxError: invalid syntax
我没有得到这种行为...... 请有人解释一下......
答案 0 :(得分:7)
python interpreter逐行执行代码
这是 false !!!
Python读取整个文件,将编译为字节码,然后执行字节码。 如果文件中没有 where 语法错误,则运行指令,因为解释器将首先尝试解析文件的全部内容,意识到这不是一个结构良好的计划。
Python不是bash。
不清楚我对最后一句话的意思:
$echo 'print("Hello, World!")
> $(
> ' > test.py
$python test.py # NOTE: no Hello, World in the output
File "test.py", line 2
$(
^
SyntaxError: invalid syntax
$echo 'echo "Hello, World!"
$(
' > test.sh
$bash test.sh # NOTE: there's a Hello, World => bash execute the first statement!
Hello, World!
test.sh: riga 2: EOF non atteso durante la ricerca di ")"
test.sh: riga 4: errore di sintassi: EOF non atteso
我的语言环境是意大利语。该错误只是一个标准错误消息,表示它发现了意外的EOF。
因此bash在开始执行之前不解析整个文件。 Quod est demostrandum