首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么Python没有main函数?

作者 | 豌豆花下猫 来源 | Python猫(ID:python_cat) 众所周知,Python中没有所谓的main函数,但是网上经常有文章提到“ Python的main函数”和“建议编写main函数...其实,可能他们是想模仿真正的main函数,但是许多人都被误导(或误解),然后编写了非常笨拙的代码。 在本文中,我们来讨论一下为什么Python没有main函数。...在开始讨论之前,我们先来回答以下两个问题: 所谓的“main函数”究竟是什么意思? 为什么有些编程语言必须编写main函数?...除了函数名是“main”之外,这段代码与我们前面介绍的main函数没有半点关系,这个函数既不是必须的,也不能确定程序的执行顺序。即便没有上面这样的main函数,也不会有任何的语法问题。...每次看到这些笨拙的代码时,我都会感到不适。为什么要写这样的if语句?你压根不应该将这段代码包装成一个函数! 总结 打破惯性思维,编写真实的代码。

1.8K20

Python 为什么没有 main 函数?为什么我不推荐写 main 函数?

本期“Python 为什么”栏目来聊聊 Python 为什么没有 main 函数? 在开始正题之前,先要来回答这两个问题:所谓的 “main 函数”是指什么?...为什么有些编程语言需要强制写一个 main 函数?...除了函数名是“main”以外,它跟我们前面介绍的正统的 main 函数没有半毛钱关系,既没有强制性,也没有必然决定程序执行顺序的作用。缺少它,也不会导致什么语法问题。...其次,存在多文件时,入口文件(main.py)中极不推荐写这一句,此文件的代码逻辑应该精炼,理论上其内容不该被导出到其它模块使用,因为它是起点!...小结:本文首先解释了什么是 main 入口函数,以及为什么某些语言会强制要求写 main 函数;接着,解释了为什么 Python 不需要写 main 函数;最后则是针对某些人存在的惯性误区,分享了我个人的四点编程经验

2.5K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    箭头函数与普通函数(function)的区别是什么?构造函数(function)可以使用 new 生成实例,那么箭头函数可以吗?为什么?

    基本不同 1.写法不同,箭头函数使用箭头定义,普通函数中没有 .箭头函数都是匿名函数,普通函数可以有匿名函数,也可以有具体名函数,但是箭头函数都是匿名函数。...在普通函数中,this总是指向调用它的对象,如果用作构造函数,this指向创建的对象实例。箭头函数中没有this,声明时捕获其所在上下文的this供自己使用。...所以箭头函数结合call(),apply()方法调用一个函数时,只传入一个参数对this没有影响。...,不能使用new 关键字,因为new关键字是调用函数对象的constructor属性,箭头函数中没有该属性,所以不能new function fn1(){ console.log...arguments,取而代之用rest参数…解决 6.箭头函数不可做Generator函数

    2K10

    为什么 Python 没有函数重载?如何用装饰器实现函数重载?

    当我们像 area(7) 这样调用函数 area 时,它会调用第二个函数,而 area(3,4) 则会调用第一个函数。 为什么 Python 中没有函数重载? Python 不支持函数重载。...为了简单起见,我们在实现函数重载时,通过不同的参数数量来区分同名函数。...函数名 函数接收的参数量 被重写的__call__方法会调用被封装的函数,并返回计算的值(这没有啥特别的)。...当我们接下来运用装饰器时,这种行为将会派上用场。 构建虚拟的命名空间 我们要创建一个虚拟的命名空间,用于存储在定义阶段收集的所有函数。...我们没有更改 Python 的默认行为,因此在原生的命名空间中,同名的函数只有一个。 这个 get 函数决定了会调用函数的哪个实现(如果重载了的话)。

    3.4K10

    我发现了华点:vue规定用普通函数定义方法,为什么react又要我用箭头函数!

    在调用时分别打印this,结果如下: 箭头函数中this正确指向了组件实例,但普通函数中却指向了undefined,为什么?...但为什么使用箭头函数,this又可以正确指向组件实例呢?...我们知道,箭头函数没有自己的this,用到的时候只能根据作用域链去寻找最近的那个。放在这里,也就是构造函数这个作用域中的this——组件实例。...这样就可以解释为什么react组件中,箭头函数的this能正确指向组件实例。...普通函数都有自己的this,所以绑定完后,被调用时都能正确指向组件实例。但箭头函数没有自己的this,便无从谈及修改,它只能去找父级作用域中的this。这个父级作用域是谁呢?是组件实例吗?

    79610

    WordPress 使用了 CDN 之后,为什么图片不显示或部分没有被替换成 CDN 域名

    我们继续来解答 WPJAM Basic 插件「CDN 加速」功能的常见问题,今天是图片不能正常显示和没有替换为 CDN 域名这两个问题: 我感觉什么都设置好了,但是图片还是不显示,这是为什么?...这个问题可以归类为为什么部分图片没有被替换成 CDN 域名,还是本地域名,拿 Revolution slider 插件出来说,因为因为这个插件用户比较多,碰到的人比较多。...其实对于 WordPress 正确的做法是使用 set_url_scheme 函数来处理,它会自动根据页面 http 协议给图片加上对应的协议,不过这个要修改插件和主题的源代码,对于很多人来说并不合适。...域名了: 为了效率考虑,该选项默认是没有开启的,如果没有这个问题,也不建议开启。...另外部分用户通过浏览器开发者工具看到个别的 JS 没有部分替换成 CDN 域名: 简单看了一下,这几个 JS 不是 PHP 直接加载的,是通过其他 JS 加载的,所以无法替换,只能通过更改你的主题代码来实现

    1.8K30

    反常识:为什么虚函数在构造和析构时并不“虚”?

    本文也是读者朋友面试大疆时的面试真题,据读者反馈,面试官问:构造函数和析构函数可以调用虚函数吗?事后读者朋友向我求助时,我的回答是,当然可以。...三个函数 本题从字面中可以看到涉及到三个函数,分别是: 构造函数:构造函数是用来初始化对象的,它会在对象创建时被调用。 析构函数:析构函数是用于清理对象的,它会在对象销毁时被调用。...基本原理 函数执行顺序 定义子类对象时,会先执行父类的构造函数,再执行子类的构造函数。销毁子类对象时,先执行子类的析构函数,再执行父类的析构函数。...所以并不符合多态的预期,那也就没有必要使用虚函数了,也就是说虚函数在构造函数和析构函数中是“失效”的,不建议在构造函数和析构函数中调用虚函数。...} 输出结果: Base::cleanup() 建总结议 如上从原理、实验都验证了,构造函数、析构函数中虽然可以调用虚函数,但是虚函数“失效”了,所以并不符合多态的预期,没有必要使用虚函数,所以不建议在构造函数和析构函数中调用虚函数

    7810

    (自制翻译)如何解决在vue中this报错undefined

    我猜你肯定用了一个箭头函数。如果你把这个箭头函数替换成普通函数,也许能解决上面你遇到的问题。 接下来让我们深入原理来了解为什么会产生这个问题。...大多数情况下你在vue里最好使用普通函数,特别是当你构建: methods computed props watched props 普通函数通常是你所需要的,而箭头函数用起来更便利。...箭头函数 箭头函数书写起来更简略更快捷,并能为我们获得更多人气。但是它变得不那么好了当我们在一个对象里定义方法时,比如当我们编写vue组件时。...匿名函数 当你仅仅是想快速构建一个函数且并不需要调用它时,使用匿名函数是非常适合的。这类函数之所以被称为匿名函数,是因为它们不需要赋予函数名和参数值。...而普通函数引用this就很奇怪,这也是为什么箭头函数被更多人推荐使用。

    4.1K40

    ES6 系列之箭头函数

    没有 this 箭头函数没有 this,所以需要通过查找作用域链来确定 this 的值。 这就意味着如果箭头函数被非箭头函数包含,this 绑定的就是最近一层非箭头函数的 this。...没有 arguments 箭头函数没有自己的 arguments 对象,这不一定是件坏事,因为箭头函数可以访问外围函数的 arguments 对象: function constant() {...没有原型 由于不能使用 new 调用箭头函数,所以也没有构建原型的需求,于是箭头函数也不存在 prototype 这个属性。...没有 super 连原型都没有,自然也不能通过 super 来访问原型的属性,所以箭头函数也是没有 super 的,不过跟 this、arguments、new.target 一样,这些值由外围最近一层非箭头函数决定...对象属性中的函数就被称之为 method,那么 non-mehtod 就是指不被用作对象属性中的函数了,可是为什么说箭头函数更适合 non-method 呢?

    46420
    领券