怎么if __name__ == "__main__":办?
# Threading example
import time, thread
def myfunction(string, sleeptime, lock, *args):
while True:
lock.acquire()
time.sleep(sleeptime)
lock.release()
time.sleep(sleeptime)
if __name__ == "__main__":
lock = thread.allocate_lock()
thread.start_new_thread(myfunction, ("Thread #: 1", 2, lock))
thread.start_new_thread(myfunction, ("Thread #: 2", 2, lock))
Run Code Online (Sandbox Code Playgroud) 我应该用以下内容启动Python程序:
if__name__ == '__main__':
some code...
Run Code Online (Sandbox Code Playgroud)
如果是这样,为什么?我多次看到它,但对它没有任何线索.
所以我启动了pyscripter,我得到了一个文件:
def main():
pass
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
那是什么?为什么我的程序在没有它的情况下工作?无论如何,这是什么目的?我的代码会在哪里?让我们说一个打印你好世界的功能.那会怎么样?我在哪里打电话给它?
阅读以下内容后,我想我明白将最简单的脚本包装在 main() 函数中的价值。
我应该在 main() 内部还是外部定义所有函数?
有正确或错误的方法吗?两种方法的优缺点是什么?
我读了下面给出的答案:
似乎更好的做法(?)main()在创建模块时将所有代码放入函数中以避免在导入时执行它。
但同时,当我将所有函数放入其中main()并想将其导入另一个程序时,我将如何调用所有这些函数?
这样做似乎适得其反,但显然我理解错误,所以我很感激我能得到的任何帮助。
编辑:如果我理解的话,请告诉我,我们不会在 main() 中放置任何实际的函数,它们是单独的函数。里面唯一的东西是它的部分__main__?例如:
程序test.py:
def my_function():
print('Hello')
def my_function2(num):
return num*num
print('Hi')
Run Code Online (Sandbox Code Playgroud)
修改的test.py
def my_function():
print('Hello')
def my_function2(num):
return num*num
def main(): #so it doesn't execute when imported
print('Hi')
Run Code Online (Sandbox Code Playgroud)
这是您使用的准确方式吗main()?
我知道Go中的程序是从main函数中作为起点运行的.但我想知道为新包创建功能的工作流程.
例如在python中,我__main__直接调用模块时使用模块.从其他文件导入模块时__main__将被忽略.在开发新模块时,这很有用.
if __name__ == "__main__":
# Run module code here if module called directly
Run Code Online (Sandbox Code Playgroud)
对于Go我正在使用test.go文件package main以及我的main.go文件来测试我正在创建的包中的函数.
// test.go
package main
import (
"newpackage"
)
func main() {
newpackage.MyNewFunc()
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点,还是标准的工作流程?谢谢.
我正在练习Python,我正在尝试编写一个循环,但是当我运行它时它不会打印.我通过jupyter笔记本使用Python 2.7.当我运行代码时,它所做的就是启动另一个内核但不打印任何内容.
def main():
x = 0
while (x < 5):
print (x)
x = x + 1
Run Code Online (Sandbox Code Playgroud)