In the following article, we will learn about debugging in python. Learn about some python debugging methods, and know what role python debugging can play in python programming.
Why debugging is necessary
The probability that the program can be written once and run normally is very small, basically no more than 1%. There are always various bugs that need to be fixed. Some bugs are very simple. You can tell by looking at the error message. Some bugs are very complicated. We need to know which variables have correct values and which variables have wrong values when an error occurs. Therefore, we need a complete set of means to debug the program. to fix the bug. So how does python debug? The answer will be given below.
The first method is simple, direct, crude and effective, which is to use print() to print out the variables that may have problems and have a look:
def foo(s): n = int(s) print('>>> n = %d' % n) return 10 / n def main(): foo('0') main()
Find in the output after execution Printed variable value:
$ python err.py >>> n = 0 Traceback (most recent call last): ... ZeroDivisionError: integer division or modulo by zero
The biggest disadvantage of using print() is that you have to delete it in the future. Think about the fact that print() is everywhere in the program, and the running results will also contain a lot of junk information. So, we have a second method.
The second method is: wherever print() is used to assist viewing, assertion (assert) can be used instead:
def foo(s): n = int(s) assert n != 0, 'n is zero!' return 10 / n def main(): foo('0')
assert means , the expression n != 0 should be True, otherwise, according to the logic of program operation, the following code will definitely go wrong.
If the assertion fails, the assert statement itself will throw AssertionError:
$ python err.py Traceback (most recent call last): ... AssertionError: n is zero!
If the program is full of asserts, it will be no better than print(). However, you can use the -O parameter to turn off assert when starting the Python interpreter:
$ python -O err.py Traceback (most recent call last): ... ZeroDivisionError: division by zero
After turning it off, you can view all assert statements as passes.
The above is all the content described in this article. This article mainly introduces the relevant knowledge of python debugging. I hope you can use the information to understand the above content. I hope what I have described in this article will be helpful to you and make it easier for you to learn python.
For more related knowledge, please visit the Python tutorial column on the php Chinese website.
The above is the detailed content of Python debugging; print() and assertions (example analysis 2). For more information, please follow other related articles on the PHP Chinese website!