修改best_practices.py文件如下所示:
在此示例代码中,文件的前10行具有与之前相同的内容 。第12行的第二个函数创建并返回一些示例数据,第17行的第三个函数模拟将修改后的数据写入数据库 。
第21行定义了main()函数 。在此示例中,对main()做出修改 , 它将调用数据读取,数据处理以及数据写入等功能 。
首先,从read_data_from_web()中创建data 。将data作为参数传入process_data(),之后将返回modified_data 。最后 , 将modified_data传入write_data_to_database() 。
脚本的最后两行是条件语块用于验证__name__,并且如果if语句为True,则执行main() 。
在命令行中运行如下所示:
根据执行结果,Python解释器在执行main()函数时,将依次执行read_data_from_web(),process_data()以及write_data_to_database() 。当然,您也可以导入best_practices.py文件并重用process_data()作为不同的数据输入源 , 如下所示:
在此示例中,导入了best_practices并且将其简写为bp 。
导入过程会导致Python解释器执行best_practices.py的全部代码,因此输出显示解释文件用途的信息 。
然后 , 从文件中存储数据而不是从Web中读取数据 。之后,可以重用best_practices.py文件中的process_data()和write_data_to_database()函数 。在此情况下 , 可以利用代码重写来取代在main()函数中实现全部的代码逻辑 。
实践总结
以下是Python中main()函数的四个关键最佳实践:
结论
恭喜!您现在已经了解如何创建Python main()函数了 。
本文介绍了如下内容:
现在,您可以开始编写一些非常棒的关于Python main()函数代码啦!
python递归排序程序错误 , 为什么?函数中做到了,主函数却没有python传参数是传值还是引用
def fun(k,len):
print k,' ',id(k)
if len!=0:
k[k.index(min(k))],k[0]=k[0],k[k.index(min(k))]
fun(k[1:],len-1)
可见k每次没有改变
如何解决python报错找不到主函数的错误解决python报错找不到主函数错误的方法:
在代码的最下方加上“if __name__ == '__main__':”主函数语句,将需要使用的代码语句放到该语句下面就可以了
示例如下:
更多Python知识,请关注:Python自学网?。?
python主函数怎么写一般来说,Python程序员可能是这样写main()函数的:
"""Module docstring.
This serves as a long usage message.
"""import sysimport getoptdef main():
# parse command line options
try:
opts, args = getopt.getopt(sys.argv[1:], "h", ["help"])except getopt.error, msg:print msgprint "for help use --help"
sys.exit(2)# process options
for o, a in opts:if o in ("-h", "--help"):print __doc__
sys.exit(0)# process arguments
for arg in args:
process(arg) # process() is defined elsewhereif __name__ == "__main__":
main()1234567891011121314151617181920212223242526
Guido也承认之前自己写的main()函数也是类似的结构 , 但是这样写的灵活性还不够高 , 尤其是需要解析复杂的命令行选项时 。为此,他向大家提出了几点建议 。
添加可选的 argv 参数
首先 , 修改main()函数 , 使其接受一个可选参数 argv,支持在交互式shell中调用该函数:
def main(argv=None):
if argv is None:
argv = sys.argv# etc., replacing sys.argv with argv in the getopt() call.1234
这样做,我们就可以动态地提供 argv 的值,这比下面这样写更加的灵活:
def main(argv=sys.argv):
# etc.12
这是因为在调用函数时,sys.argv 的值可能会发生变化;可选参数的默认值都是在定义main()函数时,就已经计算好的 。
推荐阅读
- 移动硬盘加密怎么结束,移动硬盘加密中途怎么取消
- ios6系统无法登录微信聊天记录,苹果6系统微信登陆不了
- 修仙经营游戏ios,橙光修仙经营破解版
- java异或运算代码,java利用异或运算的性质,对几个字符
- java工作流引擎代码 java工作流flowable
- 小米电脑快捷键盘怎么设置,小米电脑快捷键盘怎么设置的
- u盘上的文件怎么加密文件,u盘里面的文件怎么加密
- postGreSQL字段去空格,plsql去除空格字符
- go语言优雅教程 go语言入门指南