毫无疑问 Python 中没有所谓的 main 入口函数,但是网上经常看到一些文章提“Python 的 main 函数”、“建议写 main 函数”……
众所周知,Python中没有所谓的main函数,但是网上经常有文章提到“ Python的main函数”和“建议编写main函数”。
一种是利用菜单栏、工具栏、右击出现的 "run xxxx"(或者快捷键 Ctrl + Shift + F10) 实现。
Python 是如何执行的?执行顺序是怎么样? 至上而下,逐行执行 #!usr/bin/env python # -*- coding:utf-8 _*- """ # author: 小菠萝测试笔记 # blog: https://www.cnblogs.com/poloyy/ # time: 2021/7/18 3:09 下午 # file: 3_字符串.py """ print("hello world") print('hello world') print("""hello world""")
说到什么是代码执行的入口,对于入口这个词,大家都不会感到陌生。进入一栋大楼是需要有入口的,赛车想要进入赛道也一定要有一个入口。
朋友眼中你是小明(__name__ == '小明'), 你自己眼中你是你自己(__name__ == '__main__'),
对于很多编程语言来说,程序都必须要有一个入口,比如 C,C++,以及完全面向对象的编程语言 Java,C# 等。如果你接触过这些语言,对于程序入口这个概念应该很好理解,C 和 C++ 都需要有一个 main 函数来作为程序的入口,也就是程序的运行会从 main 函数开始。同样,Java 和 C# 必须要有一个包含 Main 方法的主类来作为程序入口。
程序入口 对于很多编程语言来说,程序都必须要有一个入口,比如 C,C++,以及完全面向对象的编程语言 Java,C# 等。如果你接触过这些语言,对于程序入口这个概念应该很好理解,C 和 C++ 都需要有一个 main 函数来作为程序的入口,也就是程序的运行会从 main 函数开始。同样,Java 和 C# 必须要有一个包含 Main 方法的主类来作为程序入口。 而 Python 则有不同,它属于脚本语言,不像编译型语言那样先将程序编译成二进制再运行,而是动态的逐行解释运行。也就是从脚本第一行开始运行
学习过C语言或者Java语言的盆友应该都知道程序运行必然有主程序入口main函数,而python却不同,即便没有主程序入口,程序一样可以自上而下对代码块依次运行,然后python不少开源项目或者模块中依然存在 __name__ == “__main__” 这种写法,具体是上面意思呢?
Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
主要是再进一步加深Python中关于多线程相关函数join()的理解以解多线程的执行过程。这里通过下面的例子来作进一步的说明。
> 系统模块就是一个python的程序脚本,专门提供给我们自己的程序使用。它们是在安装好python环境时,就已经存在的,需要的时候可以使用 import 导入到程序中使用。
假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明');在你自己眼中,你是你自己(__name__ == '__main__')。
先给出结论,对该语句用法简单的解释就是:如果if __name__ == '__main__' 所在模块是被直接运行的,则该语句下代码块被运行,如果所在模块是被导入到其他的python脚本中运行的,则该语句下代码块不被运行。
在很多 Python 的代码的时候,我们通常可能会看到 __name__ 这个变量。
这个问题的解决方法非常简单,就是把start.py文件从bin文件夹移出来就好了。
在大多数编排得好一点的脚本或者程序里面都有这段if __name__ == '__ main__ ': ,虽然一直知道他的作用,但是一直比较模糊,收集资料详细理解之后与大家分享。
Python函数修饰符,“@”,与其说是修饰函数倒不如说是引用、调用它修饰的函数。
当 URL 路径或者查询参数中,带有中文或者特殊字符的时候,就需要对 URL 进行编码(采用十六进制编码格式)。URL 编码的原则是使用安全字符去表示那些不安全的字符。
Python中使用包管理模块,包通常对应一个目录,必须在目录下创建一个init.py模块,init.py模块的模块名称即为包名,Python才会将目录解析为包。 init.py文件内可以定义初始化包的内容,导入包的内容,限制包内模块的导出。 init.py文件可以为空,也可以是一个模块,其模块名称为包名称。 导入包或包的模块、变量、函数时,init .py文件会被自动执行。
bcc是eBPF的一种前端,当然这个前端特别地简单好用。可以直接在python里面嵌入通过C语言写的BPF程序,并帮忙产生BPF bytecode和load进入kernel挂载kprobe、tracepoints等上面执行。之后,还可以从python取出来C函数里面导出的maps数据以及per-event数据并进行打印。
最近在组内研究专项项目,其中的一个现有工具是用 Python 开发的,我的目标是对这款工具的流程进行优化。虽然可以找到对应的开发者了解现有流程,然后结合我的研究提出优化方案,最后让 TA 去编码实现。但是程序员心理使然,什么东西都想自己琢磨明白,于是开启了摸索历程。
新年马上到了,FormSec现在这里给大家拜年,祝大家狗年旺财! 当然新年礼物已经给大家备好了:《基于python的自动化代码审计》 本文通过介绍在python开发中经常出现的常规web漏
一个 .py,除了可以被直接运行外,还可以作为模块, 被其他 .py文件导入。不管是直接运行还是被导 入,.py 文件的最顶层代码都会被运行( Python 用缩 进来区分代码层次)。
如果使用方只用把插件加到依赖里,安装以后这个插件就自动生效了,那使用方岂不是非常方便?但 Python 是个运行时的动态语言,所有代码需要生效都要实际执行它,那么这个执行时谁来做,什么时机执行呢?
Ansible 2 API ansible 2 API发生了很大的变化。 通过对ansible 2.4.2 的源代码(Python 环境为2.7.5)进行分析来学习如何使用ansible 2 api 并自己编写一个ansible api。 ansible 2.4.2 相对于 ansible 2.2.2 变化比较大的地方是 Inventory 类和解析 inventory 的方式。 我们分析ansible的AdHocCLI模式来了解ansible的运行过程。 入口文件分析: 入口文件:ansible 命令
书接上回,Go lang1.18首个程序的运行犹如一声悠扬的长笛,标志着并发编程的Go lang巨轮正式开始起航。那么,在这艘巨轮之上,我们首先该做些什么呢?当然需要了解最基本的语法,那就是基础变量的声明与使用。
云函数 SCF 各个运行时已内置部分常用依赖库,您可前往各运行时代码开发中查询:Node.js、Python 、PHP。但仅有内置依赖库是不足以满足用户的代码运行诉求的,在此基础上,云函数 SCF 提供了丰富的依赖安装方式。我们将分为上下两篇进行讲解,本文将介绍对 Node.js 和 Python 运行时的依赖安装方法,下篇将为大家介绍 PHP、Java、Go 的依赖安装方法。 Node.js 说明:https://cloud.tencent.com/document/product/583/11060
有个朋友提出了一个问题:手头上现在有一个二维列表,比如[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]],现在要把该二维列表变成为[[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]。
**什么场景下会有main函数?** 当该python脚本被作为模块(module)引入(import)时,其中的main()函数将不会被执行。 **main函数的作用?** __ name__ == ‘__ main__’是Python的main函数入口。并非说,加入这句才能使用python xxx…
Python项目的代码要求: 高性能,封装性(可复用)、抽象 自己写程序的要求: 不单追求简单业务逻辑。更要考虑封装性 项目结构: 顶级结构: 包 文件夹,类似jar,dll等 二级结构: 模块 .py文件,单文件可包含多个类,也可以不定义类,但最好用类组织起来 三级结构: 类 函数、变量(类的特性) 包和模块的命名: 与文件夹和文件的名称相同 区分不同包的模块:使用命名空间 baoA.module baoB.module 注意: 包可以包含字包 如
然后在代码的那个idle界面为代码添加断点,所谓断点简单的说就是调试程序时需要停顿的位置,一般在函数的入口,参数变化的行添加,这里只在fac函数入口添加一个断点,点函数入口行,再右键弹出菜单,选择Set Breaking,如图
Python的官方默认实现为CPython,即C语言实现(主要指解释器的实现,其他实现见Other Interpreter Implementations)。CPython的源代码可以从官网pyhton.org或者 github.com/python/cpython 获取,目前最新的稳定版本为3.8.0,于2019.10.14发布。这里,从官网 https://www.python.org/downloads/release/python-380/ 下载源码压缩包,如下图所示,
如果对 Python 源码感兴趣,那“窥探”其实现的最佳方式就是调教它,不,调试它。
对于python3的应用程序,解释器用/usr/bin/python3(python3如果不在此目录下,更换到相应目录).对于运行,可以对写的脚本添加执行权限,也可以用指定的程序来执行(如:python3 ./脚本)
Python的程序结构包含包(package),模块(module)和函数。Python系统自带的工具包和模块在Python安装目录下的Lib目录,每个包必须包含一个__init__.py的文件,用于标示当前文件夹是一个Python包,即使__init__.py中不包含任何内容,如果没有__init__.py这个文件,Python将无法识别包。
AutoLine开源平台是一个开源自动化测试解决方案,基于RobotFramework进行二次开发,支持RobotFramework几乎所有的库。
首先,框架设计上遵循着模块设计的原则,把这个框架分为了几大类。他们分别为:框架入口,结果类,执行类,测试加载类,测试用例类和测试套件类。
我发现有不少朋友写 Python 脚本非常随意,要么不用函数,要么函数随处定义,反正第一眼看不出要执行的第一行代码位于何处,这样的脚本可读性很差,而且容易隐藏 bug,解决这个问题很简单,当我们写 Python 脚本时,一定要加上这个:
int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
花下猫语:常见的源码保护手段有四种,即发行 pyc 文件、代码混淆、打包成二进制文件以及使用 Cython,这些方法各有优点,但缺点也不少。前面我分享了一篇文章,对四种手段作了细致的对比分析,今天要继续分享该系列的第二篇。本文提出了一种新的源码保护手段,很有启发性。
在 Python 中,每个模块(module)都有内置的 __name__ 变量,它的值取决于模块的使用方式。当模块被直接执行时,__name__ 的值是 __main__。当模块被导入时,__name__ 的值是模块的名字。
Dropbox 是世界上流行的桌面应用之一,你可以安装在 Windows、macOS 和部分的 Linux 发行版上。但你可能不知道,这个应用大部分是用 Python 写的。实际上,Drew 给 Dropbox 写下的第一行代码就是用的 Windows 版 Python,用的是老牌的 pywin32 等库。
我三年前写过一篇文章:《小问题大隐患:如何正确设置 Python 项目的入口文件?》。讲到Python项目应该如何正确组织代码结构。入口文件应该在最外面,调用关系应该是从外向内调用。绝对不能学Java,从一个很深层的文件夹里面往外调用。
如何同时对一个文件夹开启四个任务同时处理不同的任务,而不会产生冲突?接下来我们一起了解一下多线程和多进程。
默认情况下,Python源码文件是UTF-8编码。可以通过 # _*_ coding:cp-1252 _*_ 指定其他编码。
领取专属 10元无门槛券
手把手带您无忧上云