我试图在其他文件中调用带有重新定义变量"搜索"的文件中的searchf,但我假设它是行不通的,因为函数呼叫 if __name__ == "__main__":
filea.py
import FileB
search = "stackoverflow"
searchF(search)
fileb.py
from apiclient.discovery import build
from apiclient.errors import HttpError
from oauth2client.tools import argparser
search = "Google"
def searchF(search)
DEVELOPER_KEY = "REPLACE_ME"
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"
def youtube_search(options):
youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
developerKey=DEVELOPER_KEY)
search_response = youtube.search().list(
q=options.q,
type="video",
part="id,snippet",
maxResults=options.max_results
).execute()
search_videos = []
for search_result in search_response.get("items", []):
search_videos.append(search_result["id"]["videoId"])
video_ids = ",".join(search_videos)
video_response = youtube.videos().list(
id=video_ids,
part='snippet, contentDetails'
).execute()
videos = []
for video_result in video_response.get("items", []):
videos.append("%s, (%s,%s)" % (video_result["snippet"]["title"],
video_result["contentDetails"],
video_result["contentDetails"]))
find = "licensedContent': True"
result = ', '.join(videos)
print find in result
if __name__ == "__main__":
argparser.add_argument("--q", help="Search term", default=search)
argparser.add_argument("--max-results", help="Max results", default=25)
args = argparser.parse_args()
try:
youtube_search(args)
except HttpError, e:
print "An HTTP error %d occurred:n%s" % (e.resp.status, e.content)
if __name__ == "__main__":
(非常)简单地说,这意味着脚本是从终端启动的,就像SO
>>> python FileA.py
可以在此处找到更深入的讨论。但这不是为什么您的导入不起作用的原因。
从您粘贴的代码中,您的问题似乎是您调用searchF
函数的方式。目前,它尚未在FileA.py
范围(确切的模块符号表)中定义。当您尝试调用它时,它根本不存在,它没有定义。但是,您可以通过称呼它来达到它:
FileB.searchF(search)
如果您想按照自己的方式调用该函数,则应将导入更改为:
from FileB import searchF
这样,您将能够在没有前缀的情况下达到该功能。阅读更多信息的好地方是文档。