pycharm统一目录下调用 为什么显示的运行内容一致

我从123.py程序中调用file_2内容 可是两个显示的运行代码是一样的(两个都是在运行中哈 123.py截图 截错了 最后的运行内容两个是一样的) 正常情况123.py不是应该显示:储存到memory2内容有。而不是memory1内容有

img

img

出现你这个问题的原因很简单。你在123.py中通过import 引入了file_2一个变量,看似只是引入了一个变量,其实import后,file_2中代码会执行,这就导致运行在123.py后会打印出memory1,同时你的file_2中的代码又有一个time.sleep 导致file_2中代码一直没有执行完毕,从而123.py中的那个打印的代码不会执行。总得来说,就是你在123.py中通过import 引入了file_2,会先等待file_2中的代码执行完毕后再执行123.py中的代码

img


看好,你上面代码虽然打开的是123.py,但是执行的还是file_2.py
在左侧项目视图里,鼠标放到123.py上,右键,run

<br/ >

from file2 import monery1


Python 把每一个 *.py 文件都默认作为模块,可以直接 import 。导入时即执行 *.py 内代码语句。可能是您用了 time.sleep(60) ,让您想看到的延迟了一分钟

  • 我复刻您的操作,修改为 time.sleep(6) 了。

img

img

  • file3.py 运行效果截图

img

  第一行打印为加载 file4.py 时运行代码打印。第二行打印为 6 秒延迟后,file3.py 文件中的代码打印。



还可以这样试炼:
加载 *.py 中的模块——

例如:

img

img

  • file1.py 代码运行效果截屏

img

  • file1.py 对 file2.py 中的模块调用错误,修改
from file2 import monery1

print(dir())

print('存储到monery2的内容有:', monery1())
  • 运行效果截图

img

  • 由于 file2.py 中的模块没有返回值,所以第二行打印空。

  • 修改 file2.py

import time

def monery1():
    ''' 示例模块 '''
    monery1 = list(range(1, 6)) # 列表变量。
    print('存储到monery1的内容有:', monery1) # 打印到屏幕
    return monery1 

if __name__ == '__main__':
    n = 5
    while n > 0:
        monery1()
        time.sleep(6) # 暂停6秒。

img