首页
学习
活动
专区
圈层
工具
发布

为什么Python没有main函数?

作者 | 豌豆花下猫 来源 | Python猫(ID:python_cat) 众所周知,Python中没有所谓的main函数,但是网上经常有文章提到“ Python的main函数”和“建议编写main函数...其实,可能他们是想模仿真正的main函数,但是许多人都被误导(或误解),然后编写了非常笨拙的代码。 在本文中,我们来讨论一下为什么Python没有main函数。...换句话说,Python不需要规定程序员必须在语法上定义一个统一的入口(无论是函数、类还是其他东西)。...除了函数名是“main”之外,这段代码与我们前面介绍的main函数没有半点关系,这个函数既不是必须的,也不能确定程序的执行顺序。即便没有上面这样的main函数,也不会有任何的语法问题。...你可以使用main.py,而不是编写main函数。由于Python程序的执行单元是脚本文件,而不是函数或类,因此建议将入口文件命名为main.py,并根据需要决定内部的函数。

2.5K20

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

当我们像 area(7) 这样调用函数 area 时,它会调用第二个函数,而 area(3,4) 则会调用第一个函数。 为什么 Python 中没有函数重载? Python 不支持函数重载。...Python猫注:这里说 Python 不支持函数重载,指的是在不用语法糖的情况下。使用 functools 库的 singledispatch 装饰器,Python 也可以实现函数重载。...函数名 函数接收的参数量 被重写的__call__方法会调用被封装的函数,并返回计算的值(这没有啥特别的)。...我们没有更改 Python 的默认行为,因此在原生的命名空间中,同名的函数只有一个。 这个 get 函数决定了会调用函数的哪个实现(如果重载了的话)。...") # 调用被封装的函数,并返回调用的结果 return fn(*args, **kwargs) 该方法从虚拟命名空间中获取正确的函数,如果没有找到任何函数,它就抛出一个 Exception

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

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

    毫无疑问 Python 中没有所谓的 main 入口函数,但是网上经常看到一些文章提“Python 的 main 函数”、“建议写 main 函数”…… 有些人是知情的,他的意图可能是模仿那些正宗的 main...本期“Python 为什么”栏目来聊聊 Python 为什么没有 main 函数? 在开始正题之前,先要来回答这两个问题:所谓的 “main 函数”是指什么?...有时候运行 Python 项目,并没有指定入口文件(命令行中较常见,例如"python -m http.server 8000"), 那可能是存在 __main__.py 文件,它所在的包被当成一个“...也就是说,Python 没有必要在语法层面规定程序员必须定义出一个统一的入口(不管是函数还是类还是什么东西)。...除了函数名是“main”以外,它跟我们前面介绍的正统的 main 函数没有半毛钱关系,既没有强制性,也没有必然决定程序执行顺序的作用。缺少它,也不会导致什么语法问题。

    3.7K31

    OpenCV-Python中没有Mat.convertTo函数怎么办?

    点击上方蓝字关注我们 微信公众号:OpenCV学堂 关注获取更多计算机视觉与深度学习知识 函数说明 OpenCV C++的图像对象Mat有一个函数convertTo可以把图像数据在不同的精度类型之间来回切换比如从字节到浮点数之间来回切换...但是到了Python中之后,很多人就会认为convertTo函数只是一个数据精度类型转换函数,不会太过关心细节,然后直接使用它。这样的结果往往导致一些细数据差异跟输出不一致问题出现。...C++/Python对比 对一张输入图像完成Sobel滤波操作,C++实现的代码如下: Mat image = imread("D:/images/dannis1.png", IMREAD_GRAYSCALE...Mat gradx; Sobel(m1, gradx, -1, 1, 0); gradx.convertTo(m2, CV_8U, 255); imshow("sobel", m2); 运行结果如下: Python...这个很多书上跟博文并没有人提到,所以我写出来分享一下,这个技术细节点!

    2.4K40

    oracle 常见函数_oracle有没有包含的函数

    oracle 数据库 中主要使用两种类型的函数: 1. 单行函数:操作一行数据,返回一个结果 常用的单行函数有: 字符串函数:对字符串操作。 数字函数:对数字进行计算,返回一个数字。...日期函数:对日期和时间进行处理。 转换函数:可以将一种数据类型转换为另外一种数据类型。 2. 聚合函数(多行函数、分组函数、组函数):操作多行数据,并返回一个结果。...比如 SUM 一、字符串函数 字符函数接受字符参数,这些参数可以是表中的列,也可以是一个字符串表达式。...HOUR 匹配的结果中没有加上时区,因此在中国运行的结果小 8 小时。...————————- 7 rows selected 2、NVL2(x,value1,value2) 如果x非空,返回value1,否则返回value2 例:对EMP表中工资为2000元以下的员工,如果没有奖金

    3.6K30

    C语言程序可以没有main函数

    学习C语言的同学都知道,每个C程序要有一个main函数,程序从main函数开始执行,在main函数中结束。但事实上,C程序也可以没有main函数,或者说自己可以指定入口函数。...这篇文章主要介绍了c语言之没有main函数的helloworld示例,本文分解了带main函数的helloworld示例,从而分析出不需要main函数的helloworld示例,需要的朋友可以参考下。...图1 执行结果 大家都知道用户的代码是从main函数开始执行的,虽然我们只写了一个main函数,但从上面的函数表可以看到还有其它很多函数,比如_start函数。...实际上main函数只是用户代码的入口,它会由系统库去调用,在main函数之前,系统库会做一些初始化工作,比如分配全局变量的内存,初始化堆、线程等,当main函数执行完后,会通过exit()函数做一些清理工作...如果我们在_start函数中去掉exit(0)语句,程序执行会出core,这是因为_start函数执行完程序就结束了,而我们自己实现的_start里面没有调用exit()去清理内存。 ?

    4.8K20

    python中延时函数_python延时函数

    思想在python里已经变成内置函数了。...python全局解释锁(gil)简单来说就是一个互斥体… 简单的说,algoplus就是官方ctp的python翻译版,没有过度的封装,让交易者根据自己的实际情况选择官方设计的功能。...事实上,linux 并没有原生的线程,线程是通过进程实现的。 python 中每一个进程会启动一个解释器,而线程会共享一个解释器。 python 中的线程是通过标准库 threading 实现的。...python 脚本性能或 python 调用 c 函数库。...举例:带眼镜装饰器是任意可调用的对象,本质就是函数装饰器在python中使用如此方便归因于python的函数能像普通的对象一样能作为参数传递给其他函数,可以被复制给其他变量,可以… python中父线程和子线程没有直接的管理关系

    8.4K20

    python函数

    python函数 本文目录 1 调用函数 2 定义函数 3 形式参数与实际参数 4 四种参数 4.1 位置参数 4.2 关键字参数 4.3 默认参数 4.4 不定长参数 5 不可变类型与可变类型的参数传递...函数体内部的"""显示简单友好的问候"""是被称为文档字符串的注释,描述函数是做什么的;注释内容由三引号"""括起来,Python用它们来生成文档。...对于使用位置参数的函数,如果调用该函数时参数数目不对,Python会给出错误。...调用时并没有给出第二个参数(animal_type)的值,因此使用其默认值。...在上面的例子中,如果在调用中只指定了animal_type一个实参,则Python仍然会将其当成第一个参数name处理。 不定长参数 如果需要传入的参数个数没有确定,则可以使用不定长参数。

    1.2K20

    python函数

    #python利用函数提高代码的重用率,减少了代码冗余。...#定义函数 #python使用def语句定义函数,基本格式如下: def 函数名(参数表): 函数语句 return 返回值 #其中,参数和返回值都不是必须有的,python允许函数可以没有参数,也没有返回值...例如: def hello(): print("python 你好") #调用函数; hello() #hello()函数没有参数,也没有返回值,通过print()打印一个字符串。...print(res) #函数调用 #在python中,所有的语句都是实时执行的,不像cc++存在编译过程。...def也是一条可执行的语句,定义一个函数。所以函数的调用 #必须在函数定义之后。 #在python中,函数名也是一个变量,它引用return语句返回的值,没有返回值,函数值为None。

    38110

    Python函数

    今天是节后第一天上班,也是2018新的开始,首先祝各位新年快乐,学业有成,工作顺利,一切顺顺顺 今天我们来了解python中的函数 Python函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段...1.1.Python函数定义 1.2.对象创建 在 python 中,类型属于对象,变量是没有类型的: 以上代码中,[1,2,3] 是 List 类型,"Runoob" 是 String 类型,而变量...a 是没有类型,她仅仅是一个对象的引用(一个指针),可以是 List 类型对象,也可以指向 String 类型对象。...1.5.调用函数时的参数使用 1)必备参数 必须与函数声明时一致的顺序来传递参数。 2)关键字参数 传参数时可与函数声明的顺序不一样,因为Python解释器可以用参数名来匹配参数值。...5)匿名函数(使用lambda创建) python 使用 lambda来创建匿名函数。lambda只是一个表达式,函数体比def简单很多。lambda的主体是一个表达式,而不是一个代码块。

    1.3K90
    领券