if __name__ == "__main__": draw1() run1()为什么 draw1()运行时, run1()运行
时间: 2023-07-02 19:12:58 浏览: 49
在 Python 中,当程序执行到 `if __name__ == "__main__":` 时,会先执行 `draw1()` 函数,然后才会执行 `run1()` 函数。但是,在 `draw1()` 函数执行期间,程序会一直停留在这个函数中,直到函数执行完毕或者发生异常才会返回到主程序。因此,在 `draw1()` 函数执行期间,`run1()` 函数不会运行。
可能是由于 `draw1()` 函数是一个长时间运行的函数,导致程序看起来像同时运行了两个函数。如果想要确认程序的执行情况,可以在 `draw1()` 函数中加入输出语句,以便在函数执行过程中输出一些信息,例如:
```python
def draw1():
print("draw1() started")
# 长时间运行的代码
while True:
pass
print("draw1() finished")
```
这样,当程序执行到 `draw1()` 函数时,会先输出 "draw1() started",然后进入一个无限循环。在这个循环中,程序会一直停留在 `draw1()` 函数中,直到使用 Ctrl+C 中断程序或者发生异常才会退出循环并返回到主程序。在函数执行完毕后,会输出 "draw1() finished"。
相关问题
if __name__ == "__main__": draw1() run1()为什么 run1()不执行
根据Python的执行规则,当运行一个Python文件时,解释器会首先执行文件中的所有顶级可执行代码,包括函数定义、类定义和赋值语句等。当解释器执行到 `if __name__ == "__main__":` 这一行时,它会将下面的代码块作为一个整体进行处理,判断 `__name__` 是否为 `"__main__"`,如果是,则执行下面的代码块,否则跳过。
在这个例子中,如果 `draw1()` 和 `run1()` 都是顶级函数定义,而没有被包含在其他函数或类中,那么它们会在执行 `if __name__ == "__main__":` 之前就被定义了。因此,当解释器执行到 `if __name__ == "__main__":` 时,`draw1()` 已经被定义了,但是 `run1()` 还没有被执行,因此它不会被执行。
如果要让 `run1()` 也被执行,可以将它的调用放在 `if __name__ == "__main__":` 块中,像这样:
```python
if __name__ == "__main__":
draw1()
run1()
```
这样,当 `__name__` 为 `"__main__"` 时,`draw1()` 和 `run1()` 都会被执行。
if __name__ == "__main__": draw1() run1()为什么 draw1() run1()同时运行
在 Python 中,主程序的执行顺序是从上到下依次执行的。当程序执行到 `if __name__ == "__main__":` 时,会先执行 `draw1()` 函数,然后才会执行 `run1()` 函数。但是,在 `run1()` 函数执行过程中,程序会一直停留在这个函数中,直到函数执行完毕或者发生异常才会返回到主程序。因此,在 `run1()` 函数执行期间,`draw1()` 函数也会同时运行。
如果想要让 `draw1()` 函数在 `run1()` 函数执行完成后再执行,可以在 `run1()` 函数中使用线程来执行 `draw1()` 函数。例如,可以使用 `threading` 模块来创建一个新线程来运行 `draw1()` 函数:
```python
import threading
def run1():
# 线程函数,用于运行 draw1() 函数
def run_draw1():
draw1()
# 创建新线程并启动
draw_thread = threading.Thread(target=run_draw1)
draw_thread.start()
while True:
# 无限循环代码
pass
if __name__ == "__main__":
run1()
```
这样,当程序执行到 `if __name__ == "__main__":` 时,会先执行 `run1()` 函数。在 `run1()` 函数中,会创建一个新线程来运行 `draw1()` 函数,并在主线程中执行一个无限循环。因此,`draw1()` 函数会在新线程中运行,而 `run1()` 函数会在主线程中执行无限循环。这样可以让 `draw1()` 函数在 `run1()` 函数执行完成后再执行。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)