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

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

本期“Python 为什么”栏目来聊聊 Python 为什么没有 main 函数? 在开始正题之前,先要来回答这两个问题:所谓的 “main 函数”是指什么?...函数最多只能有一个,也就是说程序的入口是唯一的 语法格式有一定的要求,具有相对固定的模板 为什么要强制一个main入口函数呢?...之所以有些知情人要命名出一个”main“函数,其实是想强调它的”主要“地位,想要人为地安排它作为第一个执行的函数。他们可能认为这样命名的函数,比较容易记忆。...为什么要写那行 if 语句呢?可能的话,应该拆分 main 函数,甚至不必封装成一个函数啊! 我个人总结出以下的经验: 打破惯性思维,写出地道的代码。...小结:本文首先解释了什么是 main 入口函数,以及为什么某些语言会强制要求写 main 函数;接着,解释了为什么 Python 不需要写 main 函数;最后则是针对某些人存在的惯性误区,分享了我个人的四点编程经验

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

    Python | super函数是如何来继承的

    Py 2.x 和 Py 3.x 中有一个很大的区别就是类,无论是类的定义还是类的继承。Py 3.x 中类的继承可以直接使用 super() 关键字代替原来的 super(Class, self)。...那么 super() 到底是依据什么来继承的呢?今天就来分析下。 super()函数根据传进去的两个参数具体作用如下: 通过第一参数传进去的类名确定当前在MRO中的哪个位置。...__mro__) c.name() 执行以上代码输出:当执行C类下的super()函数时,实际调用了A类下的name函数。A中注释掉了super()函数,所以并没有向后继续执行。...,执行代码输出:可以看到,当A执行后继续执行了B中的name()函数。...如果B中仍然有super函数则会继续向上去查找object中是否有name()函数。

    1K30

    为什么vue中的data必须是一个函数?

    引用类型与函数区别 引用类型与函数 object是引用类型,如果不用function返回,每个组件的data都是内存的同一个地址,一个数据改变了其他也改变了。...js中只有函数构成作用域(只有函数的{}构成作用域,对象的{}以及if(){}都不构成作用域),data是一个函数时,每个组件实例都有自己的作用域,每个实例相互独立,不会互相影响。...,另外一个实例也会跟着改; 两个实例必须有自己各自的作用域才行,需要通过下列方法进行处理 const Mycomponent = function(){ this.data = this.data...(); } Mycomponent.prototype.data = function(){ return { a: 1, b: 2 } } 这样每一个实例的data属性都是独立的...这是js本身的特性带来的,跟vue本身设计无关。

    1.5K10

    vue中组件的data为什么是一个函数

    组件是可复用的vue实例,一个组件被创建好之后,就可能被用在各个地方,而组件不管被复用了多少次,组件中的data数据都应该是相互隔离,互不影响的,基于这一理念,组件每复用一次,data数据就应该被复制一次...,之后,当某一处复用的地方组件内data数据被改变时,其他复用地方组件的data数据不受影响,如下面这个例子: ?...该组件被复用了三次,但每个复用的地方组件内的count数据相互不受影响,它们各自维护各自内部的count。 ?...能有这样效果正是因为上述例子中的data不是一个单纯的对象,而是一个函数返回值的形式,所以每个组件实例可以维护一份被返回对象的独立拷贝,如果我们将上述例子中的data修改为: ?...那么就会造成无论在哪个组件里改变了count值,都会影响到其他两个组件里的count。 ?

    1.7K20

    Python制作表白小助手

    程序介绍 Python版本:3.6.5 相关模块: pygame模块; 以及一些Python自带的模块。 鼠标无法点击“滚”按钮,只能点击“好呀”按钮。...抖音上的程序据说是用C#写的,具体的源码自己没有去找,用上次文章提到的方法将txt改成vbs应该也能实现,但是今天我们利用python实现这一有趣好玩的功能。...textRect.midtop = (WIDTH/scale[0], HEIGHT/scale[1]) screen.blit(textRender, textRect) 这里要设置的是字体的一些样式...,同样使用函数封装 跳转后的页面 # 点击喜欢按钮后显示的页面 def show_like_interface(text, screen, color=( 255,0,255)): screen.fill...1 教你一点社交知识 2 Python助你抢红包 3 我是如何自学 Python 的? 4 用Python做一个三阶拼图 ··· END ···

    1.9K30

    教你如何用Python写一个小游戏

    引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏、后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下其中的有趣之处...安装pygame并创建能左右移动的飞船 安装pygame 本人电脑是windows 10、python3.6,pygame下载地址:传送门 请自行下载对应python版本的pygame 运行以下命令...bottom of window self.rect.centerx = self.screen_rect.centerx self.rect.bottom = self.screen_rect.bottom...重构的目的是为了简化代码的结构,使其更加容易扩展。我们将实现一个game_functions模块,它将存储大量让游戏Alien invasion运行的函数。...函数check_events() 首先我们将管理事件的代码移到一个名为check_events()的函数中,目的是为了隔离事件循环 import sys import pygame def check_events

    5.5K70

    Python实现动态镜头变焦效果:模拟镜头拉近拉远

    引言 在视频和游戏开发中,镜头变焦效果是一个常见且重要的视觉效果,可以让观众或玩家聚焦于特定的细节。本文将展示如何使用Python和Pygame库实现动态镜头变焦效果,模拟镜头的拉近和拉远。...如果你还没有安装它,可以使用以下命令进行安装: pip install pygame Pygame是一个跨平台的Python模块,用于编写视频游戏。它包括计算机图形和声音库,使得游戏开发更加简单。...image_rect = image.get_rect(center=(400, 300)) zoom_level = 1.0 zoom_speed = 0.1 变焦函数 我们定义一个函数来处理图像的变焦效果...elif event.key == pygame.K_DOWN: zoom_level = max(zoom_level - zoom_speed, 0.1) screen.fill...image_rect = image.get_rect(center=(400, 300)) zoom_level = 1.0 zoom_speed = 0.1 # 变焦函数 def zoom_image

    28710

    手把手教你用python写游戏「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。...引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏、后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,项目来自《...Python编程从入门到实践》(本文将原项目中的部分错误进行修改完善,PS:强烈推荐这本书,真的很赞),来感受下其中的有趣之处。...安装pygame并创建能左右移动的飞船 安装pygame 本人电脑是windows 10、python3.6,pygame下载地址:传送门 请自行下载对应python版本的pygame 运行以下命令...这里改动代码较多,直接看效果: 移动外星人 前面我们创建的是静态的外星人,现在我们需要让外星人动起来。

    2.5K21

    OpenCV论道:为什么我的伽马校正函数只有一行?

    大家好,又见面了,我是你们的朋友全栈君。...就是提升图像的暗部细节。这与加曝处理是不一样的,加曝一般不区分图像的暗部和亮部。...奇怪的是,我在网上搜到的伽马校正函数看起来都很复杂,即便是 python 写的,也都得十几行甚至几十行,可我写的伽马校正函数只有一行。为什么会这样呢?是我理解的不对吗?...、未经伽马校正的灰度二值化效果、伽马校正(gamma=2)的灰度二值化效果、伽马校正(gamma=3)的灰度二值化效果: 对于彩色图片,这个伽马校正函数依然有效。...左图是一张老照片,暗区什么也看不出来;右图是经过伽马校正后的效果,暗区细节较为明显。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    1.7K20

    PyGame:Python 游戏编程入门-1

    ,群里会分享学习资料 前言 pygame是SDL 库的 Python 包装器,它代表Simple DirectMedia 层。...在上面示例中导入pygame库后,您做的第一件事就是使用pygame.init() 。此函数调用所有包含模块的单独init()函数。...显示器和表面 除了模块之外,pygame还包括几个 Python类,它们封装了非硬件依赖的概念。其中之一是Surface最基本的,它定义了一个可以绘制的矩形区域。Surface对象在pygame....然后.init()使用.super()调用 的.init()方法Sprite。有关为什么这是必要的更多信息,您可以阅读使用 Python super() 为您的课程增压。...您将在屏幕中间大致看到一个白色矩形: 如果将第 59 行更改为 ,您认为会发生什么screen.blit(player.surf, player.rect)?

    3.6K40

    机器学习笔记之为什么逻辑回归的损失函数是交叉熵

    逻辑回归反向传播伪代码; 大家可以思考下能不能回答/推导出,但这次讨论的问题是: 为什么逻辑回归损失函数是交叉熵? 初看这个问题感觉很奇怪,但是其中的知识包含了LR的推导与理解。...在我个人看来,可以从两个角度看待这个问题: ''' 【1】从极大似然估计的角度可以推导出交叉熵; 【2】从KL散度(熵的角度)去理解; ''' 0x01 极大似然估计 对于逻辑回归,我们一般通过极大似然估计来求解参数...首先假设两个逻辑回归的两个条件概率: ? 学习时,采用极大似然估计来估计模型的参数,似然函数为: ? 对数似然函数(采用对数似然函数是因为上述公式的连乘操作易造成下溢)为: ?...简单来说,「KL散度是衡量两个概率分布的差异」。 逻辑回归模型最后的计算结果(通过sigmoid或softmax函数)是各个分类的概率(可以看做是各个分类的概率分布)。...那么假设真实的概率分布是,估计得到的概率分布是, 这两个概率分布的距离如何去衡量?在信息论中,「相对熵」,也就是KL散度可以衡量两个概率分布的差异性。具体公式为: ?

    1.5K10

    Python 游戏开发实战:从入门到精通

    Python 是一种功能强大的编程语言,也可以用于开发各种有趣的游戏。在这篇文章中,我们将介绍一些使用 Python 编写游戏代码的基础知识和示例,帮助你踏上游戏开发的征程。...Pygame 库的介绍与安装Pygame 是一个专门用于游戏开发的 Python 库,它提供了丰富的功能和工具,使得开发游戏变得更加简单和有趣。首先,我们需要安装 Pygame 库。...绘制图形Pygame 提供了各种函数来绘制图形,例如绘制矩形、圆形、线条等。...()# 退出游戏pygame.quit()在上述代码中,我们使用 pygame.draw.rect() 函数绘制了一个红色的矩形。...这只是一个简单的 Python 游戏开发入门教程,通过这些示例代码,你可以初步了解如何使用 Python 和 Pygame 库来开发游戏。

    1.1K10

    Python制作动态进度条:实现动态加载效果

    引言 动态进度条在许多应用程序中都是一个重要的UI元素,它能够直观地展示任务的完成进度。在这篇博客中,我们将使用Python创建一个动态的进度条,通过使用Pygame库实现动态加载效果。...无论是用来展示下载进度、文件处理进度,还是其他需要指示任务进度的场景,这个进度条都能派上用场。 准备工作 前置条件 在开始之前,你需要确保你的系统已经安装了Pygame库。...如果你还没有安装它,可以使用以下命令进行安装: pip install pygame Pygame是一个跨平台的Python模块,用于编写视频游戏。...(): if event.type == pygame.QUIT: running = False screen.fill((0, 0, 0))...event in pygame.event.get(): if event.type == pygame.QUIT: running = False screen.fill

    36010

    神经网络中的激活函数-tanh为什么要引入激活函数tanh的绘制公式特点图像python绘制tanh函数相关资料

    为什么要引入激活函数 如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当...正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络就有意义了(不再是输入的线性组合,可以逼近任意函数)。...最早的想法是sigmoid函数或者tanh函数,输出有界,很容易充当下一层输入(以及一些人的生物解释balabala)。激活函数的作用是为了增加神经网络模型的非线性。...tanh的绘制 tanh是双曲函数中的一个,tanh()为双曲正切。在数学中,双曲正切“tanh”是由基本双曲函数双曲正弦和双曲余弦推导而来。 公式 ?...相关资料 python绘制神经网络中的Sigmoid和Tanh激活函数图像(附代码) - CSDN博客 神经网络中的激活函数具体是什么?

    2.7K20

    手把手教你用python写游戏

    参考链接: Python中的逻辑门 引言  最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏、后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个...python小游戏,项目来自《Python编程从入门到实践》(本文将原项目中的部分错误进行修改完善,PS:强烈推荐这本书,真的很赞),来感受下其中的有趣之处。...安装pygame并创建能左右移动的飞船  安装pygame  本人电脑是windows 10、python3.6,pygame下载地址:传送门  请自行下载对应python版本的pygame  运行以下命令...这个移动属性是飞船属性的一种,我们用ship类来控制,因此我们给这个类增加一个属性名称叫,moving_right以及一个update()方法来检测标志moving_right的状态。 ...这里改动代码较多,直接看效果:    移动外星人  前面我们创建的是静态的外星人,现在我们需要让外星人动起来。

    1.6K20

    Pandas用了一年,这3个函数是我最的最爱……

    01 assign 在数据分析处理中,赋值产生新的列是非常高频的应用场景,简单的可能是赋值常数列、复杂的可能是由一列产生另外一个一列,对于这种需求pandas有多种方法实现,但个人唯独喜欢assign,...02 eval 实际上,eval是一个Python基础函数,用于执行字符串形式的计算表达式,例如以下简单实例: ?...当然,eval中的计算表达式本身属于字符串形式,所以自然也可以用Python的通用字符串引用方法。如下图所示。 ?...以及[]等等,此时如果灵活运用query函数,那么会便捷不少。...当然,之所以说query中支持类似SQL的语法,是因为其也有两个SQL中标志性的设计,其一是@引用自定义外部变量,其二是对于特殊的列名(例如包含空格的字符)可以用反引号``加以修饰引用。

    2.2K30
    领券