Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.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
Python “SyntaxError.print\u file\u和\u line”是什么意思?_Python_Cpython - Fatal编程技术网

Python “SyntaxError.print\u file\u和\u line”是什么意思?

Python “SyntaxError.print\u file\u和\u line”是什么意思?,python,cpython,Python,Cpython,在Python中,SyntaxError对象具有print\u file\u和\u line属性: >>> SyntaxError.print_file_and_line <member 'print_file_and_line' of 'SyntaxError' objects> >>> help(SyntaxError.print_file_and_line) Help on member descriptor builtins.Syntax

在Python中,
SyntaxError
对象具有
print\u file\u和\u line
属性:

>>> SyntaxError.print_file_and_line
<member 'print_file_and_line' of 'SyntaxError' objects>

>>> help(SyntaxError.print_file_and_line)
Help on member descriptor builtins.SyntaxError.print_file_and_line:

print_file_and_line
    exception print_file_and_line

>>> s = SyntaxError()
>>> s.print_file_and_line
# None
>>> s.print_file_and_line = [{'what am I for'}]

>>> s.print_file_and_line
[{'what am I for'}]
>>SyntaxError.print\u file\u和\u行
>>>帮助(SyntaxError.print\u文件和\u行)
关于成员描述符builtins.SyntaxError.print\u file\u和\u行的帮助:
打印文件和行
异常打印文件和行
>>>s=合成错误()
>>>s.打印文件和行
#没有
>>>s.print_file_和_line=[{'I'm for'}]
>>>s.打印文件和行
[{'I'm for'}]

这是干什么用的?

据我所知,它的存在被用作标记,在
pythonrun.c
中的
print\u exception
中触发一些额外的代码,以打印出语法错误的文件和行,以及行的实际文本和标记错误位置的插入符号,打印出堆栈跟踪的其余部分后。请记住,带有语法错误的代码永远不会执行——毕竟导入失败——因此它实际上不是堆栈跟踪的一部分。我得到的印象是,
print\u file\u和_line
更像是一个实现,而不是一个可以有效交互的东西


当您看到从语法错误打印的回溯时,这些标有
的行可能会打印检测到错误的文件名和行号。可能所有异常类都需要通过继承或重写来实现此方法。它不是
方法
,而是
成员
——因此它不可调用,只是某个或其他对象的一段数据。我怀疑这是某种标志,但将其设置为True似乎没有任何效果。
$ echo ')' > syntax_error.py
$ python -c 'import syntax_error'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "syntax_error.py", line 1           <<<
    )                                      <<<
    ^                                      <<<
SyntaxError: invalid syntax
$ python3 python_syntax_test.py
Traceback (most recent call last):
  File "python_syntax_test.py", line 10, in <module>
    raise FakeSyntaxException()
  File "example.txt", line 123
    Here is some text
         ^
__main__.FakeSyntaxException: Something went wrong
$ python3 python_syntax_test.py
Traceback (most recent call last):
  File "python_syntax_test.py", line 10, in <module>
    raise FakeSyntaxException()
__main__.FakeSyntaxException