导航:首页 > 编程语言 > python程序执行入口

python程序执行入口

发布时间:2023-05-13 00:22:29

1. python代码的执行入口是哪

python没有C语言的main函数这样的执行入口,它是顺序执行的。

2. python代码 怎么 开始执行,从什么位置开始的

python代码是顺序执行的,是自上而下的,它没有类似C的main函数这样的入口函数。

3. 这个python程序的入口在哪

可以自己定义入口(main)

在代码最后面加上

if__name__=='__main__':
M=Macro()#实例化类文件
M.ExecuteBlock()#调用类文件的方法

这个实际上类似于C 或者 java 的main()

假设这个文件叫做mac.py

命令行里执行

pythonmac.py
#就会执行if__name__=='__main__':下面的代码

4. Python程序代码混淆、编译、打包、运行(桌面程序防破解向)

像Python这种解释性的语言,要想私有化部署的同时又保护好源码,就像是对于鱼和熊掌的追求。

虽然做不到尽善尽美,但是对代码进行混淆,增加一点破解的难度,或许能规避一些泄露的风险。

本次演示环境:linux

确保要发布的包根目录("demo")中有__main__.py文件,这个是程序执行入口。

编译

批量改名.pyc文件

移动.pyc文件

清理.py文件

清理__pycache__文件夹

打包成zip

运行时只要将zip文件作为参数即可

最终整合脚本

调用方式

对于在变量和函数名上的混淆有点小儿科,而对于跨文件的类名的混淆又太容易实现。

所以对于混淆程度的取舍,要视工程的规模而定。

2.1 混淆工具pyminifier

在原来的工具 pyminifier上修复了几个bug。

安装:

python3 安装

或者clone下来,自行安装

使用例子

2.2 源码变更

不同的配置对于源码的要求不同,以下是笔者踩过的坑。

其他混淆想法

结合混淆、编译和打包,尝试出以下发布脚本。

主要的思路 :创建一个工作目录tmp,然后在此目录下混淆、编译python代码,完成后把内容打包成pyc文件,再将pyc文件和其他配置文件移动到dist,发布dist即可。

混淆的目的是最大程度保护源码,在发布到客户端后不被轻易破解。

5. python 生成的exe 怎么运行

Python是一种简单而强大的编程语言,适用于编写脚本,甚至于应用程序的开发。Python可用的各种GUI包使得利用Python编写全功能的应用变为可能。这很好,但你有没有想过将你编写的Python脚本转化为可执行文件?这似乎是一个很赞的主意,有许多原因!你可以在没有Python解释器的情况下重新部署你的应用。终端用户不需要在他的机器上安装Python。你可以将你的应用闭源(很不幸)等等……这篇文章可以告诉你如何从你的Python脚本生成win32可执行文件。

Python is a simple and powerful language for scripting and even application development. Various GUI packages available for Python makes it suitable for developing full fledged applications in python. Ok that is fine, but ever thought of creating an executable file from the python script you wrote? This seems to be a nice idea, there are many reasons why! You can redistribute your application without python. The end user needn't to install python on his machine. You can make your application closed source (unfortunate) etc... Read on this article to find how you can create win32 executables from your Python script.

This tutorial will give step by step instruction on how to create Win32 executable from Python script. Make sure that the following are installed on your system.

这篇教程将会一步一步的介绍如何从Python脚本创建Win32可执行文件。请确保你的系统里已经安装了下面的程序。

Python. Get Python fromh and install on your machine.
py2exe. Get py2exe from 下载时注意安装的Python版本。

命令行程序

下面的示例代码会在命令行里打印一行标题,以及从1到10的数字。

test.py

print "Python script to exe test program"count = 0while count < 10:print "count = " + str(count) +" "count = count + 1123456

把这段代码保存在test.py(或者别的以.py为后缀的)文件中。用Python解释器首先测试并成功运行这段代码。要完成这一步,只需要在命令行里输入“python test.py”。你应当在命令行里看到下面的输出。

目前为止一切顺利。现在让我们看看我们怎样从脚本构建windows可执行程序。创建一个新文件命名为setup.py并将下面的代码粘贴进去。

setup.py

from distutils.core import setupimport py2exe

setup(console=['gui.py'])123

构建可执行文件时,在命令提示符里运行“python setup.py py2exe”。一旦构建过程完成,移动到dist子目录下并通过在命令行里键入“gui.exe”来运行这个可执行文件。现在你应该看到与前面用Python脚本创建的一样的窗体。

6. 在Python中定义Main函数

目录

许多编程语言都有一个特殊的函数,当操作系统开始运行程序时会自动执行该函数。这个函数通常被命名为main(),并且依据语言标准具有特定的返回类型和参数。另一方面,Python解释器从文件顶部开始执行脚本,并且没有自动执行的特殊函数。

尽管如此,为程序的执行定义一个起始点有助于理解程序是如何运行的。Python程序员提出了几种方式对此进行实现。

本文结束时,您将了解以下内容:

Python中的基本main()函数

一些Python脚本中,包含一个函数定义和一个条件语句,如下所示:

此代码中,包含一个main()函数,在程序执行时打印Hello World!。此外,还包含一个条件(或if)语句,用于检查__name__的值并将其与字符串"__main__"进行比较。当if语句为True时,Python解释器将执行main()函数。更多关于Python条件语句的信息可以由此获得。

这种代码模式在Python文件中非常常见,它将作为脚本执行并导入另一个模块。为了帮助理解这段代码的执行方式,首先需要了解Python解释器如何根据代码的执行方式设置__name__。

Python中的执行模式

Python解释器执行代码有两种方式:

更多内容可参考如何运行Python脚本。无论采用哪种方式,Python都会定义一个名为__name__的特殊变量,该变量包含一个字符串,其值取决于代码的使用方式。

本文将如下示例文件保存为execution_methods.py,以 探索 代码如何根据上下文改变行为:

在此文件中,定义了三个对print()函数的调用。前两个打印一些介绍性短语。第三个print()会先打印短语The value __name__ is,之后将使用Python内置的repr()函数打印出__name__变量。

在Python中,repr()函数将对象转化为供解释器读取的形式。上述示例通过使用repr()函数来强调__name__的值为字符串。更多关于repr()的内容可参考Python文档。

在本文中,您将随处可见文件(file),模块(mole)和脚本(script)这三个字眼。实际上,三者之间并无太大的差别。不过,在强调代码目的时,还是存在细微的差异:

“如何运行Python脚本”一文也讨论了三者的差别。

基于命令行执行

在这类方法中,Python脚本将通过命令行来执行。

执行脚本时,无法与Python解释器正在执行的代码交互。关于如何通过命令行执行代码的详细信息对本文而言并不重要,但您可以通过展开下框阅读更多有关Windows,Linux和macOS之间命令行差异的内容。

命令行环境

不同的操作系统在使用命令行执行代码时存在细微的差异。

在Linux和macOS中,通常使用如下命令:

美元符号($)之前的内容可能有所不同,具体取决于您的用户名和计算机名称。您键入的命令位于$之后。在Linux或macOS上,Python3的可执行文件名为python3,因此可以通过输入python3 script_name.py来运行python脚本。

在Windows上,命令提示符通常如下所示:

根据您的用户名,>之前的内容可能会有所不同,您输入的命令位于>之后。在Windows上,Python3的可执行文件通常为python。因此可以通过输入python script_name.py来运行python脚本。

无论哪种操作系统,本文的Python脚本的输出结果都是相同的。因此本文以Linux和macOS为例。

使用命令行执行execution_methods.py,如下所示:

在这个示例中,__name__具有值'__main__',其中引号(')表明该值为字符串类型。

请记住,在Python中,使用单引号(')和双引号(")定义的字符串没有区别。更多关于字符串的内容请参考Python的基本数据类型。

如果在脚本中包含"shebang行"并直接执行它(./execution_methods.py),或者使用IPython或Jupyter Notebook的%run,将会获取相同的结果。

您还可以通过向命令行添加-m参数的方法实现以模块的方式执行。通常情况下,推荐如下方式pip: python3 -m pip install package_name。

添加-m参数将会运行包中__main__.py的代码。更多关于__main__.py文件的内容可参考如何将开源Python包发布到PyPI中。

在三种情况中,__name__都具有相同的值:字符串'__main__'。

技术细节:Python文档中具体定义了__name__何时取值为'__main__'。

当通过标准输入,脚本或者交互提示中读取数据时,模块的__name__将取值为'__main__'。(来源)

__name__与__doc__,__package__和其他属性一起存储在模块的全局命名空间。更多关于属性的信息可参考Python数据模型文档,特别是关于模块和包的信息,请参阅Python Import文档。

导入模块或解释器

接下来是Python解释器执行代码的第二种方式:导入。在开发模块或脚本时,可以使用import关键字导入他人已经构建的模块。

在导入过程中,Python执行指定模块中定义的语句(但仅在第一次导入模块时)。要演示导入execution_methods.py文件的结果,需要启动Python解释器,然后导入execution_methods.py文件:

在此代码输出中,Python解释器执行了三次print()函数调用。前两行由于没有变量,在输出方面与在命令行上作为脚本执行时完全相同。但是第三个输出存在差异。

当Python解释器导入代码时,__name__的值与要导入的模块的名称相同。您可以通过第三行的输出了解这一点。__name__的值为'execution_methods',是Python导入的.py文件。

注意如果您在没有退出Python时再次导入模块,将不会有输出。

注意:更多关于导入在Python中如何工作的内容请参考官方文档和Python中的绝对和相对导入。

Main函数的最佳实践

既然您已经了解两种执行方式上的差异,那么掌握一些最佳实践方案还是很有用的。它们将适用于编写作为脚本运行的代码或者在另一个模块导入的代码。

如下是四种实践方式:

将大部分代码放入函数或类中

请记住,Python解释器在导入模块时会执行模块中的所有代码。有时如果想要实现用户可控的代码,会导致一些副作用,例如:

在这种情况下,想要实现用户控制触发此代码的执行,而不是让Python解释器在导入模块时执行代码。

因此,最佳方法是将大部分代码包含在函数或类中。这是因为当Python解释器遇到def或class关键字时,它只存储这些定义供以后使用,并且在用户通知之前不会实际执行。

将如下代码保存在best_practices.py以证明这个想法:

在此代码中,首先从time模块中导入sleep()。

在这个示例中,参数以秒的形式传入sleep()函数中,解释器将暂停一段时间再运行。随后,使用print()函数打印关于代码描述的语句。

之后,定义一个process_data()函数,执行如下五项操作:

在命令行中执行

当你将此文件作为脚本用命令行执行时会发生什么呢?

Python解释器将执行函数定义之外的from time import sleep和print(),之后将创建函数process_data()。然后,脚本将退出而不做任何进一步的操作,因为脚本没有任何执行process_data()的代码。

如下是这段脚本的执行结果:

我们在这里看到的输出是第一个print()的结果。注意,从time导入和定义process_data()函数不产生结果。具体来说,调用定义在process_data()内部的print()不会打印结果。

导入模块或解释器执行

在会话(或其他模块)中导入此文件时,Python解释器将执行相同的步骤。

Python解释器导入文件后,您可以使用已导入模块中定义的任何变量,类或函数。为了证明这一点,我们将使用可交互的Python解释器。启动解释器,然后键入import best_practices:

导入best_practices.py后唯一的输出来自process_data()函数外定义的print()。导入模块或解释器执行与基于命令行执行类似。

使用__name__控制代码的执行

如何实现基于命令行而不使用Python解释器导入文件来执行呢?

您可以使用__name__来决定执行上下文,并且当__name__等于"__main__"时才执行process_data()。在best_practices.py文件中添加如下代码:

这段代码添加了一个条件语句来检验__name__的值。当值为"__main__"时,条件为True。记住当__name__变量的特殊值为"__main__"时意味着Python解释器会执行脚本而不是将其导入。

条件语块内添加了四行代码(第12,13,14和15行):

现在,在命令行中运行best_practices.py,并观察输出的变化:

首先,输出显示了process_data()函数外的print()的调用结果。

之后,data的值被打印。因为当Python解释器将文件作为脚本执行时,变量__name__具有值"__main__",因此条件语句被计算为True。

接下来,脚本将调用process_data()并传入data进行修改。当process_data执行时,将输出一些状态信息。最终,将输出modified_data的值。

现在您可以验证从解释器(或其他模块)导入best_practices.py后发生的事情了。如下示例演示了这种情况:

注意,当前结果与将条件语句添加到文件末尾之前相同。因为此时__name__变量的值为"best_practices",因此条件语句结果为False,Python将不执行process_data()。

创建名为main()的函数来包含要运行的代码

现在,您可以编写作为脚本由从命令行执行并导入且没有副作用的Python代码。接下来,您将学习如何编写代码并使其他程序员能轻松地理解其含义。

许多语言,如C,C++,Java以及其他的一些语言,都会定义一个叫做main()的函数,当编译程序时,操作系统会自动调用该函数。此函数通常被称为入口点(entry point),因为它是程序进入执行的起始位置。

相比之下,Python没有一个特殊的函数作为脚本的入口点。实际上在Python中可以将入口点定义成任何名称。

尽管Python不要求将函数命名为main(),但是最佳的做法是将入口点函数命名为main()。这样方便其他程序员定位程序的起点。

此外,main()函数应该包含Python解释器执行文件时要运行的任何代码。这比将代码放入条件语块中更好,因为用户可以在导入模块时重复使用main()函数。

修改best_practices.py文件如下所示:

在这个示例中,定义了一个main()函数,它包含了上面的条件语句块。之后修改条件语块执行main()。如果您将此代码作为脚本运行或导入,将获得与上一节相同的输出。

在main()中调用其他函数

另一种常见的实现方式是在main()中调用其他函数,而不是直接将代码写入main()。这样做的好处在于可以实现将几个独立运行的子任务整合。

例如,某个脚本有如下功能:

如果在单独的函数中各自实现这些子任务,您(或其他用户)可以很容易地实现代码重用。之后您可以在main()函数中创建默认的工作流。

您可以根据自己的情况选择是否使用此方案。将任务拆分为多个函数会使重用更容易,但会增加他人理解代码的难度。

修改best_practices.py文件如下所示:

在此示例代码中,文件的前10行具有与之前相同的内容。第12行的第二个函数创建并返回一些示例数据,第17行的第三个函数模拟将修改后的数据写入数据库。

第21行定义了main()函数。在此示例中,对main()做出修改,它将调用数据读取,数据处理以及数据写入等功能。

首先,从read_data_from_web()中创建data。将data作为参数传入process_data(),之后将返回modified_data。最后,将modified_data传入write_data_to_database()。

脚本的最后两行是条件语块用于验证__name__,并且如果if语句为True,则执行main()。

在命令行中运行如下所示:

根据执行结果,Python解释器在执行main()函数时,将依次执行read_data_from_web(),process_data()以及write_data_to_database()。当然,您也可以导入best_practices.py文件并重用process_data()作为不同的数据输入源,如下所示:

在此示例中,导入了best_practices并且将其简写为bp。

导入过程会导致Python解释器执行best_practices.py的全部代码,因此输出显示解释文件用途的信息。

然后,从文件中存储数据而不是从Web中读取数据。之后,可以重用best_practices.py文件中的process_data()和write_data_to_database()函数。在此情况下,可以利用代码重写来取代在main()函数中实现全部的代码逻辑。

实践总结

以下是Python中main()函数的四个关键最佳实践:

结论

恭喜!您现在已经了解如何创建Python main()函数了。

本文介绍了如下内容:

现在,您可以开始编写一些非常棒的关于Python main()函数代码啦!

7. python如何运行程序

安装并配置完成之后,我们就可以编写第一个python程序。学过其他语言的兄弟姐妹们,都知道语言的入门程序就是hello world。那么,我们这里也以hello world来抛砖引玉,打开python学习的大门。
python运行有两种方式,一种是在python交互式命令行下运行;另一种是使用文本编辑器,在命令行中直接运行。

注意:以上两种运行方式,都是以CPython解释器来编译运行的。当然也可以将python代码写入到eclipse中,使用JPython解释器运行,需要自己配置环境。(推荐学习:Python视频教程)

一、命令行与交互式命令行

首先要搞清楚这个命令行的概念。

1.命令行

定义:出现类似“C:\>”,则是在Windows提供的命令行模式

进入模式的方式:Windows中,直接win+r键进入

2.交互式命令行

定义:出现“>>>”,则是python的交互式命令行

进入模式的方式:Windows命令行中输入python即可

二、交互式命令行中运行python代码

cmd窗口中,输入python后,进入python交互式命令行。直接输入代码:

print ‘hello world!’

python-23.png

可以看到界面上运行结果,表示运行成功!

在Python的交互式命令行写程序,好处是一下就能得到结果,坏处是没法保存,下次还想运行的时候,还得再敲一遍。

所以,实际开发的时候,我们总是使用一个文本编辑器来写代码,写完了,保存为一个文件,这样,程序就可以反复运行了。

三、命令行运行python代码

1.python代码编写及保存

我们将“hello world!”程序用文本编辑器写出来,保存下来,并命名,这里我们命名为hello.py,保存到F:\workspace。

命名时,要注意:

1)文件要以.py结尾,其他都不可以

2)文件名只能是英文字母、数字和下划线的组合。

文本编辑器推荐:Notepad++、Sublime Text

2.python代码运行

在命令行模式中,输入python F:\workspace\hello.py,即可运行成功。

运行时,要注意:

1)python文件存储路径是相对路径,运行时,一定要说明python文件的存储路径,

当然,用Python开发程序,完全可以一边在文本编辑器里写代码,一边开一个交互式命令窗口,在写代码的过程中,把部分代码粘到命令行去验证,事半功倍!

8. python语言中有类似C语言或者java中程序执行时的入口方法main(),如果没有那么它是怎么执行的呢

没有,python是解释型的语言,
看见第一个可以被执行的语句就顺序执行。
比如

def abc(ab): #这是函数,没调用没执行。
print ab

ddd="abcdefg" #赋值语句,执行
print ddd #在标准输出上输出ddd的内容,执行
abc(ddd) 函数调用执行。

阅读全文

与python程序执行入口相关的资料

热点内容
鸿蒙加密等级 浏览:802
cocos2dluapdf 浏览:491
假的加密锁靠谱吗 浏览:176
经营圣手服务器怎么调 浏览:749
arduino手机编程 浏览:481
西医pdf下载 浏览:29
后浪电影学院pdf 浏览:813
程序员怎么做到不被人嫉妒 浏览:669
cmd新建文件夹md命令 浏览:570
php数组中的数值排序 浏览:832
安卓手机怎么避免小孩内购 浏览:171
联想服务器出现黄色叹号怎么办 浏览:991
约翰编译器制作教程 浏览:130
大地pdf 浏览:109
pdfplus 浏览:577
汇编O命令 浏览:970
plt转pdf 浏览:366
魔兽60宏命令大全 浏览:480
php志愿者网站源码 浏览:875
贸易pdf 浏览:498