|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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语句的过程中不会说运行文件的程序把?不然第一个例子就是有问题的。那么像上例的测试函数的时候事什么时候执行了呢? |
|