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

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

本期“Python 为什么”栏目来聊聊 Python 为什么没有 main 函数? 在开始正题之前,先要来回答这两个问题:所谓的 “main 函数”是指什么?...为什么有些编程语言需要强制写一个 main 函数?...除了函数名是“main”以外,它跟我们前面介绍的正统的 main 函数没有半毛钱关系,既没有强制性,也没有必然决定程序执行顺序的作用。缺少它,不会导致什么语法问题。...最后,多文件的非入口文件不建议写,因为在非入口文件中写这个判断,最大的作用就是写一些测试代码,但是测试代码应该分离出来,写到专门的目录或文件中。...小结:本文首先解释了什么main 入口函数,以及为什么某些语言会强制要求写 main 函数;接着,解释了为什么 Python 不需要写 main 函数;最后则是针对某些人存在的惯性误区,分享了我个人的四点编程经验

2.4K31

为什么Python没有main函数

其实,可能他们是想模仿真正的main函数,但是许多人都被误导(或误解),然后编写了非常笨拙的代码。 在本文中,我们来讨论一下为什么Python没有main函数。...在开始讨论之前,我们先来回答以下两个问题: 所谓的“main函数”究竟是什么意思? 为什么有些编程语言必须编写main函数?...最多只能有一个main函数,这意味着程序的入口是唯一的。 语法格式有特定要求,书写形式相对固定。 为什么必须强制main函数作为入口? 这些语言都是编译语言,需要将代码编译成可执行的二进制文件。...除了函数名是“main”之外,这段代码与我们前面介绍的main函数没有半点关系,这个函数既不是必须的,不能确定程序的执行顺序。即便没有上面这样的main函数不会有任何的语法问题。...为什么要写这样的if语句?你压根不应该将这段代码包装成一个函数! 总结 打破惯性思维,编写真实的代码。main函数是某些语言的唯一入口,但不应在Python中使用。

1.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

这个行当,不做程序员得懂技术

先来捋一捋思路,关于各个岗位合作打造(移动端)产品的一点想法: 为什么只有程序员是不够的 如何做一个好的非程序员 声明: 本人是程序员,截止到目前,我用的设计都是自己设计的,我用的产品策略都是自己的思考...为什么只有程序员是不够的 首先要消除一下歧义,我们见过无数的一人独挑大梁完爆数十人团队的例子,所以事实证明,只有一个程序员,某些时候是足够的。...最近想明白了一件事情:为什么身边好多人我明确地知道他们代码写的比我好,但是做不出好东西?...还有就是现在的编码能力相比从前有了十足的进步,面向协议编程、函数式编程都有了了解,对可以重构的项目大刀阔斧地更改,改代码的时候心潮那叫一个澎湃啊,觉得自己写出了多么多么厉害的代码。...类似的例子太多太多了…… ---- 或许这篇文章的标题还可以改成: 在这个行当,不做设计师得懂设计 在这个行当,不做产品经理得懂产品 不想吐槽,只想分享一点自己的看法,我觉得真正的专业,不仅是把自己份内的事做好这么简单

47420

为什么是int main()而不是void main()

C/C++ 小误区:void main() 这是基于我们学校老师一直使用void main(),而发的感慨,大一学习C语言时,我就在想,老师上课演示的为什么一直用void main(),而不是int main...,所以才不支持这个特性现在明白我为什么建议你最好加上return语句了吧!...main( )等同于C99中的int main( void );int main( int argc, char *argv[] )的用法和C99中定义的一样同样,main函数的返回值类型必须是int...如果main函数的末尾没写return语句,C++98规定编译器要自动在生成的目标文件中加入 return 0;同样,vc6不支持这个特性。...3.关于void main 在C和C++中,不接收任何参数不返回任何信息的函数原型为void fun(void);可能正是因为这个,所以很多人都误认为如果不需要程序返回值时可以把main函数定义成void

3.5K70

为什么要做数仓分层,不做行吗?

今天跟大家聊一聊数仓为什么分层? 01经典的数仓分层 首先跟大家聊一个经典的数仓分层结构,主要包括ODS、DWS、DW、APP四层。...一句话:从业务系统增量抽取,数据不做清洗转换,与业务系统数据模型保持一致。 DWS:根据ODS层,增加一些维度信息,过滤一些异常数据。...02数仓为什么分层 那么为什么数据仓库会有分层呢? 每多一层不就会多一些开发工作吗?还会经常有多层数据重复?不分层可不可以?...等一些关系型数据库来做数仓,但随着数据量的发展,特别是电信和银行业务的快速发展(那时候互联网企业还没起来),在进行一个数仓应用开发过程中,我们需要分很多步骤来进行,所以会考虑用空间来换时间,包括现在市面上会有一些用空间换时间这样的...复杂的问题简单化:做过传统数仓的都知道,以前Oracle的存储过程会写几千行,所以现在我们一般很少写几千行的业务ETL逻辑了,而是分为多个ETL过程,从明细层到应用层进行逻辑拆解,中间会进行一些逻辑合并

78910

为什么 main 方法是 public static void ?

---- 文章目录 1、为什么main方法是静态的(static) 2、为什么main方法是公有的(public) 3、为什么main方法没有返回值(Void) 4、总结 main 方法是我们学习Java...编程语言时知道的第一个方法,你是否曾经想过为什么 main 方法是 public、static、void 的。...当然,很多人首先学的是C和C++,但是在Java中main方法与前者有些细微的不同,它不会返回任何值,为什么 main 方法是 public、static、void,这篇文章尝试去找到一些答案。...main(String... args) 1、为什么main方法是静态的(static) 正因为main方法是静态的,JVM调用这个方法就不需要创建任何包含这个main方法的实例。...因为main方法是公共的,JVM就可以轻松的访问执行它。 3、为什么main方法没有返回值(Void) 因为main返回任何值对程序都没任何意义,所以设计成void,意味着main不会有任何值返回。

32520

初识C语言——为什么每个C程序都有一个main函数

我们在写C程序的时候会发现每一个程序都有一个main函数,这是为什么呢?每一个C程序都必须有吗? 答案是:是的!!!...main函数,又称主函数,是程序执行的起点,main是相对来说的,如同音学理论之主调于泛音,泛音即程序中的除main之外的其他函数,迎合人们的思考方式而生成的而非必定的模式。...在任何一个C程序中,main函数都是必不可少的,main函数是程序唯一的入口,也就是说,程序运行时,首先从main函数开始执行。...同时我们要注意一个C程序必须有且仅能有一个main函数,如果一个程序中出现了多个main函数,那么必定会出错。...因此,每个C程序都需要一个main函数作为程序的入口点,它负责接收控制权并开始执行程序的逻辑。没有main函数,程序将无法正常运行。

12910

为什么GNE 不做全自动提取列表页的功能

GNE 从一开始就不相信各种各样的列表页能自动化完美提取,所以不会去做完美自动化提取列表页的功能。GNE 要做的是,有限的自动化。 什么叫做有限自动化呢?如下图所示: ?...这个参数的值是一个看起来像是直接从 Chrome 中复制的 XPath。 没错,feature 参数是你需要的目标列表里面任意一个标题的 XPath。...这样做的好处是显而易见的——第一,这个 XPath 本身已经限定了我需要的列表页所在的位置,所以即使当前页面有多个列表页能正确识别;第二,feature 参数能表示出我们需要提取的标题所在的具体标签...所以即使一个列表每一行有多个 标签,能提取到正确的标题和 URL。 除了 XPath 外,feature 参数可以接收关键词,如下图所示: ?...GNE 会到HTML 去寻找所有包含这个关键词的节点,并通过判断他们的祖先节点来寻找这个关键词所在的标题所在的列表。 什么叫做有限的自动化 有限的自动化就是永远相信人的力量。

1.2K20

openGauss中的最大可用模式为什么PG不做

至于pg为什么不做这个功能我想了很久,下面是我自己的一点猜测。...当然这样带来膨胀的问题,这其实也是pg最遭人诟病的问题。 再来说说最大可用。...那么再来看看最大可用有什么问题。最大可用模式的解释是:在主备连接正常情况下,主备之间以同步模式提交数据,当主备之间遭遇异常导致主备连接失败那么会自动切为异步模式,不影响主机可用性。...所以我猜测pg的考虑是将低概率事件进行消灭,给用户确切的保证,追求完美。...这个参数其实是必须的,目前openGauss虽然做了最大可用,但是缺乏这个参数,主备降级很快,目前测试应该是1s以内完成切换,这个其实不合理,超时参数的需求已经提交给华为。

1K20

iOS 程序 main函数之前发生什么

主要参考: iOS程序启动->dyld加载->runtime初始化 过程 iOS 程序 main 函数之前发生了什么 image.png 一个iOS App 的 main函数位于main.m...最后dyld返回main函数地址,main函数被调用,我们便来到程序入口main函数。 一....这个步骤可以通过设置一个符号断点断在_objc_init: image.png 这个函数是runtime的初始化函数。...我们可以看下_main函数: dyld::_main函数代码.png 这里的_main函数是dyld的函数,并非我们程序里的main函数。...值得说明的是,这个过程远比写出来复杂,这里只提到了runtime这个分支,还有像GCD、XPC、等重头的系统库初始化分支没有提及(当然这里还有缓存机制) 总结:在main函数执行之前,系统做了茫茫多的加载和初始化工作

79910

从创建进程到进入main函数,发生了什么

前几天,读者群里有小伙伴提问:从进程创建后,到底是怎么进入我写的main函数的? 今天这篇文章就来聊聊这个话题。...同时留了一个问题,这个入口地址是什么?是我们的main函数吗?...随后,我们通过反汇编神器,IDA打开分析这个文件,看一下位于0x400430入口的地方是什么函数? ? 可以看到,入口地方是一个叫做 _start 的函数,并不是我们的main函数。...在_start的结尾,调用了 __libc_start_main 函数,而这个函数,位于libc.so中。 你可能疑惑,这个函数是哪里冒出来的,我们的代码中并没有用到它呢?...当然,这个工作封装在了CreateProcess系列函数中了。 新进程的主线程创建完成后,便开始参与系统调度了。主线程从哪里开始执行呢?内核在创建时就明确进行了指定:nt!

1.4K30

腾讯为什么做操作系统?

提到“操作系统”这个词,大家都会蹦出一堆词Windows、macOS、Linux、iOS、Android安卓、HarmonyOS鸿蒙等等,的确在我们现在的生活中,使用的手机、电脑,IPad几乎所有的智能终端...而服务器是更高级的计算机,要求运行更快、负载更高,当然离不开操作系统了。 02 目前的主流服务器操作系统有哪些?...04 为什么需要使用TencentOS Server?...对于容器场景来讲,腾讯大量核心业务几乎已经部分或全部容器化,例如微信所有的逻辑业务全部容器化, 针对微信业务特点,进行系列优化,顺利保障了每年春节的红包高峰运营,同时在数据安全方面,跟微信紧密合作,提供解决方案...目前,TencentOS Server内核和Tiny均已对外开源,且后者已进入开放原子开源基金会进行孵化,后续一方面希望以更加中立的方式进一步推进国产化操作系统开源和社区建设;另一方面,将在数据中心混合部署

1.6K20

为什么构造函数不能为虚函数

因此,它只能知道它是“当前”类的,而完全忽视这个对象后面是否还有继承者。...当编译器为这个构造函数产生代码时,它是为这个类的构造函数产生代码- -既不是为基类,不是为它的派生类(因为类不知道谁继承它)。         ...所以它使用的V P T R必须是对于这个类的V TA B L E。...而且,只要它是最后的构造函数调用,那么在这个对象的生命期内, V P T R将保持被初始化为指向这个V TA B L E, 但如果接着还有一个更晚派生的构造函数被调用,这个构造函数又将设置V P T R...V P T R的状态是由被最后调用的构造函数确定的。这就是为什么构造函数调用是从基类到更加派生 类顺序的另一个理由。

2.3K91
领券