运行脚本时 main() 函数不运行[重复]
- 2025-01-09 08:46:00
- admin 原创
- 14
问题描述:
考虑:
#! /usr/bin/python
def main():
print("boo")
当我尝试在 Python 3.3 中运行此代码时,它没有任何反应。没有错误或任何东西。
怎么了?
gvim script
chmod 775 script
./script
解决方案 1:
您仍然必须调用该函数。
def main(): # declaring a function just declares it - the code doesn't run
print("boo")
main() # here we call the function
解决方案 2:
我假设您想在从命令行执行脚本时调用打印函数。
__name__
在 Python 中,您可以通过检查变量来确定包含一段代码的脚本是否与最初启动的脚本相同__main__
。
#! /usr/bin/python
if __name__ == '__main__':
print("boo")
只需以下几行代码:
def main():
print("boo")
您正在定义一个函数,但实际上并未调用它。要调用该函数main()
,您需要像这样调用它:
main()
解决方案 3:
您需要调用该函数。将脚本更新为:
#! /usr/bin/python
def main():
print("boo")
# Call it
main()
解决方案 4:
在 Python 中,如果您想编写一个脚本来按顺序执行一系列小任务,那么完全没有必要编写一个函数来包含它们。
只需将每一项放在一行上;或者使用表达式分隔符;
(不太推荐,但您可以根据需要这样做),同样:
task1
task2
task3
task4
或者
task1; task2; task3; (again **not** really recommended, and certainly not pythonic)
在你的情况下,你的代码可能会变成类似这样:
print('boo')
print('boo2')
print('boo3')
并且它仍然会按照您期望的方式运行,即使没有该main()
方法,因为它们会按顺序进行评估。
请注意,您可能想要为这一系列任务创建一个函数的原因是:
向代码的客户端呈现一个良好的界面,
或者封装重复的逻辑
可能还有更多用途,但这是我能想到的第一个用途,可以证明我的观点。
现在,如果您觉得有必要编写类似于main()
其他编程语言中的方法的代码,那么请使用以下 Python 习惯用法(目前其他用户也提到过):
if __name__ == '__main__':
doSomething()
上述工作原理如下:
当你使用
import
Python 模块时,它会被string
分配一个属性(通常是导入时的名称)__name__
。当你直接执行脚本时(通过调用 Python vm 并将脚本的名称作为参数传递给它),该
__name__
属性设置为__main__
import
因此,当您使用上述习语时,您既可以通过随意使用脚本将其用作可插入模块,也if __name__ == '__main__':
可以直接执行它以直接评估其下的一系列表达式。
如果您觉得有必要挖掘更多信息,我的资料来源如下:
Python 文档:模块
Python 文档:将模块作为脚本执行
Python 文档:数据模型(搜索
__name__
)
解决方案 5:
如果你觉得其他答案令人困惑或害怕,这里有一个寓言,希望对你有帮助。看看下面的 Python 程序:
a = 34
当它运行时,它会做一些事情:在退出脚本之前,Python 会获知有一个变量,a
并且它的值是整数 34。它不会利用这些信息做任何事情,但它是一个完整的程序,会做一些事情。不过,为了产生一些实际值,它需要与其环境进行交互。它会用这个值做什么?它可以创建 34 个目录,或者 ping 数据中心中的第 34 台服务器,或者检查数据库中最新 34 个用户的密码强度,或者其他什么;或者只是打印一些东西。
a = 34
print(a)
下面的程序在某种意义上与第一个程序非常相似。
def b():
a = 34
print(a)
当你运行这个程序时,它会做一些事情: Python 现在知道有一个名为的函数b
,并且它不接受任何参数,并且它包含一些语法有效的 Python 代码,当其他代码调用它时将运行,但它实际上还没有用这段代码做任何事情。为了观察函数中的代码产生的任何值,你必须实际调用它:
b()
(顺便说一句,也许还要注意a
函数声明中的局部变量b
与同名的全局变量不同。)
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理必备:盘点2024年13款好用的项目管理软件