马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#有一个困惑,可能题目比较长,谢谢各位耐心看看。import b
def x():
print('x')
b.y()
# b.py
import a
def y():
print('y')
a.x()
上述代码直接运行b是错误的,运行a也是错误的。为了知道错误的原因在哪里,我对他进行了一个小改进:import a
print('importa语句成功')
def y():
print('y')
a.x()
import b
print('importb语句成功')
def x():
print('x')
b.y()
我就想看看import语句有没有成功,然后给我显示的是:Traceback (most recent call last):
File "C:/Users/Liliya/Desktop/b.py", line 14, in <module>[code]
import a
File "C:/Users/Liliya/Desktop\a.py", line 15, in <module>
import b
File "C:/Users/Liliya/Desktop\b.py", line 20, in <module>
a.x()
AttributeError: module 'a' has no attribute 'x'[/code]
那么说明我b程序中import a语句是没有问题正常运行的,才会到下一句打印出来print('import a 成功')那么import语句是不是只要我在搜索路径下找的到这个文件就能够正常运行呢?也就是在执行import 模块名这个语句的时候只是去搜索有没有这个文件,有的话正常运行,没有的话抛出异常,这条语句执行的过程中并不会去执行模块中的代码。
但是如果import语句成功是这样的话,我有一个困惑了,就是我们模块测试函数为啥会运行。'''方法一:import temperatureconversion
方法二:from temperatureconversion import ctf,ftc'''
import temperatureconversion as t
print('成功导入')
print('32摄氏度 = %.2f 华氏度'% t.ctf(32))
print('99华氏度 = %.2f 摄氏度度'% t.ftc(99))
def ctf(temperature):
return temperature*1.8+32
def ftc(temperature):
return (temperature-32)/1.8
def test():#测试程序,用于检查函数模块功能
print('测试,0摄氏度=%.2f'%ctf(0))
print('测试,0华氏度=%.2f'%ftc(0))
#if __name__=='__main__':
print('执行测试文件了')
test()
我去添加了测试条件,来看什么时候被运行的,然后结果是:执行测试文件了
测试,0摄氏度=32.00
测试,0华氏度=-17.78
成功导入
32摄氏度 = 89.60 华氏度
99华氏度 = 37.22 摄氏度度
这说明先运行了测试函数然后调用了函数,我不太明白了,这个测试函数是在什么时候运行的,应该不是import语句运行的把,因为如果是import语句运行的就跟前面的例子矛盾了,那这个是什么时候运行的呢?形象点说:是不是只要搜索路径下存在该模块(文件)这条语句就会被成功执行,import语句的过程中不会说运行文件的程序把?不然第一个例子就是有问题的。那么像上例的测试函数的时候事什么时候执行了呢? |