python定义f1时还没有定义f2,f1中含有f2,也能正常运行,为什么

def f1():
f2()
def f2():
print(......)

  • 你可以参考下这篇文章:python爬虫爬到的网页源码和按F12查看的网页源码不一致
  • 除此之外, 这篇博客: 中年大叔学Python第7课------零基础爬虫爬取F1图片中的 2. 项目概述-F1图片爬取 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 由于大叔本人是一个F1车迷,所以,本次爬虫的第一个项目就是爬取图片网站的F1赛车图片。

    具体步骤分为:

    1. 获取URL地址:找到一个图片网站,并搜索得到F1图片的初步结果;

    2. 在浏览器按下F12(大叔使用谷歌浏览器),并对网页进行检查分析,找到每一个图片对应的地址及地址的分层;

    3. 使用正则方法获取图片下载地址的字符串,并形成列表list;

    4. 使用os建立空文件夹

    5. 遍历列表,并存储图片至指定文件夹。

  • 以下回答由chatgpt基于相关博客总结生成:

    答案:

    在Python中,当定义一个函数f1时,即使函数f2未被定义,但在f1中调用f2函数依旧可以正常运行的原因是在Python中函数的解析是在运行时进行的,而不是在编译时,所以函数f1在定义时并没有对函数f2进行解析,因此不会出现未定义函数的错误。Python的解析器会在运行时查找函数f2的定义,如果能找到则可以正常调用,否则会报出“NameError: name 'f2' is not defined”的错误。

    具体的解决方案如下:

    1.在函数f1中调用函数f2

    def f1():
        f2()
    
    def f2():
        print("Hello World!")
    

    2.尝试调用未定义的函数f3

    def f1():
        f3()
    
    f1()
    

    结果会报出“NameError: name 'f3' is not defined”的错误。

    因此,我们可以得出结论,只有在Python运行时才能确定函数是否已经被定义,如果在定义函数f1时调用了未被定义的函数f2,则Python解释器会在运行时去查找f2的定义,如果能找到则可以正常调用,否则会报出“NameError: name 'f2' is not defined”的错误。