我写了一个非常具有缩进性的脚本,所以我决定制作函数。我对python很陌生,现在我已经创建了这些函数,没有任何作用!
def main ():
wiki_scrape()
all_csv()
wiki_set = scraped_set('locations.csv')
country_set = all_set('all.csv')
print wiki_set
我只是想知道这是否是从main()函数调用函数的正确方法?我一直在辩论,如果在被调用的函数中发生缩进问题,python似乎非常依赖于正确的缩进,即使它没有出现错误!
完整代码 - http://pastebin.com/gJGdHLgr
答案 0 :(得分:7)
听起来你需要这样做:
def main():
wiki_scrape()
all_csv()
wiki_set = scraped_set('locations.csv')
country_set = all_set('all.csv')
print wiki_set
main() # this calls your main function
更好:
def main():
wiki_scrape()
all_csv()
wiki_set = scraped_set('locations.csv')
country_set = all_set('all.csv')
print wiki_set
if __name__ == '__main__':
main() # this calls your main function
然后从命令行运行它,如下所示:
python file_name.py
内置变量__name__
是当前的上下文命名空间。如果从命令行运行脚本,它将等同于'__main__'
。如果从其他地方(包括从解释器内部)运行/导入.py文件作为模块,则命名空间(在模块的上下文中)将是.py文件名,或者包名称(如果它是其中的一部分)一套。例如:
## my_file.py ##
print('__name__ is {0}'.format(__name__))
if __name__ = '__main__':
print("Hello World!")
如果从命令行执行此操作:
python my_file.py
你会得到:
__name__ is __main__
Hello World!
但是,如果您从口译员导入,则可以看到__name__
不是__main__
:
>>> from my_file import *
>>> __name__ is my_file
答案 1 :(得分:4)
main
),否则Python不会在启动时调用任何函数。
相反,Python命名正在运行的文件,主文件名为__main__
。
如果您只想拨打主要功能,可以使用Rick的答案。
然而,在Python最佳实践中,最好执行以下操作:
if __name__ == '__main__':
wiki_scrape()
all_csv()
wiki_set = scraped_set('locations.csv')
country_set = all_set('all.csv')
print wiki_set
这确保了如果您将此python文件作为主文件(您单击的文件或从cmd运行)运行,则将运行这些函数。
如果将其用作导入模块,您仍然可以使用导入模块的脚本中的函数,但不会自动调用它们,因此不会干扰调用脚本。