我遇到了一个非常奇怪的问题。
从我进行的测试中,我得出结论python正在跳过指令。 (解释器似乎有问题)
这是我遇到问题的代码的一部分: -
def foo():
status_packet = some_fn()
print("status_packet recvd:- "+str(status_packet)) #PRINT INSTRUCTION
if(status_packet == False) :
do_something()
elif(status_packet == True):
print("True packet received") #PRINT INSTRUCTION
return True
else:
error = status_packet_handling.check_for_error(status_packet)
if(error == False):
print("false error") #PRINT INSTRUCTION
return status_packet
print(foo()) #PRINT INSTRUCTION
print("okay") #PRINT INSTRUCTION
print("close other open ports") #PRINT INSTRUCTION
print("ok_1234") #PRINT INSTRUCTION
sys.exit(1)
预期输出类似于: -
status_packet recvd:- True
True packet received
okay
close other open ports
ok_1234
[Finished in 10.1s]
但我得到的输出为: -
status_packet recvd:- True
ok_1234
[Finished in 10.1s]
我正在使用 Python 2.7.10; Anaconda 2.3.0(64位)并使用 Sublime Text 3构建
我尝试添加打印功能和其他功能,以查看我的流程是否正确。这是正在跳过的打印说明。
我可以做些什么来识别和解决这个问题?
修改: - 重要的部分是跳过的打印指令。 简化版是: -
def foo():
print("foo called")
return "foo_string"
print(foo())
print("print_statement 1")
print("print_statement 2")
print("print_statement 3")
观察到的输出: -
foo called
print_statement 3
编辑2: - 我想我需要提一下,我正在使用多模块场景,我正在通过函数传递模块。 这是一个更复杂的版本: -
a.py
import b
import c
c.function1(b)
import sys
sys.exit(1)
b.py
import e
import f
def function2():
returned_value = e.some_function()
print("returned_value = "+str(returned_value))
return returned_value
c.py
def function1(b_module):
print(b_module.function2())
print("print_statement_1")
print("print_statement_2")
print("print_statement_3")
输出: -
returned_value = True
print_statement_3