西西软件园多重安全检测下载网站、值得信赖的软件下载站!
西西首页 电脑软件 安卓软件 电脑游戏 安卓游戏 排行榜 专题合集

面向对象编程脚本(Python)

v3.8.3官方版
  • 面向对象编程脚本(Python)v3.8.3官方版
  • 软件大小:26.3M
  • 更新时间:2020-05-15 09:10
  • 软件语言:中文
  • 软件厂商:
  • 软件类别:国产软件 / 免费软件 / 编程工具
  • 软件等级:3级
  • 应用平台:WinAll
  • 官方网站:https://www.python.org
  • 应用备案:
好评:50%
坏评:50%

软件介绍

Python是一种编程语言,它使用对象,类和清晰的语法语言来帮助您创建,编辑和生成自己的应用程序。无论你是编程新手还是经验丰富的开发人员,都可以轻松学习和使用Python。有需要的小伙伴欢迎来西西下载Python2020最新版本。

软件特征:

以交互方式编写 Python 代码
Python 的解释器允许您编写和执行代码,以及定义变量。突出显示的是语法语言的简单性,旨在帮助您以交互方式编写代码,从而显着提高可读性并缩短调试时间。

轻松创建,测试和编辑代码
用 Python 编写的代码可以通过在解释器中运行来多次编辑和测试。与其他语言不同,它不会限制您在执行环境之外编辑代码,因此您只需使用解释器进行更改即可。

由于它是一种面向对象的编程语言,Python 使用数据结构将信息存储在主程序无法访问的位置,可以使用专用函数检索。

由于其语法清晰,任何计算机用户都可以轻松理解 Python。如果您刚开始学习编程,开发人员的网站会为您提供多个教程和资源。

新功能说明:

新功能

赋值表达式

有一种新语法:=可将值赋给变量,作为较大表达式的一部分。由于它与海象的眼睛和象牙很像,因此被亲切地称为“海象操作员” 。

在此示例中,赋值表达式有助于避免调用 len()两次:

if (n := len(a)) > 10:    print(f"List is too long ({n} elements, expected <= 10)")

在正则表达式匹配期间会产生类似的好处,其中需要两次匹配对象,一次是测试是否发生匹配,另一次是提取子组:

discount = 0.0if (mo := re.search(r'(\d+)% discount', advertisement)):    discount = float(mo.group(1)) / 100.0

该运算符对while循环也很有用,该循环计算一个值以测试循环终止,然后在循环体中再次需要相同的值:

# Loop over fixed length blockswhile (block := f.read(256)) != '':    process(block)

另一个具有启发性的用例出现在列表理解中,其中表达式主体中还需要在过滤条件下计算出的值:

[clean_name.title() for name in names if (clean_name := normalize('NFC', name)) in allowed_names]

尝试限制使用海象运算符来清理可降低复杂性并提高可读性的案例。

看到 有关完整说明,请参见PEP 572。

(由Emily Morehouse在bpo-35224中贡献。)

仅位置参数

有一个新的函数参数语法,/以指示某些函数参数必须在位置上指定,并且不能用作关键字参数。这help()与用Larry Hastings的Argument Clinic工具注释的C函数所显示的符号相同。

在以下示例中,参数a和b是仅位置的,而c或d可以是位置或关键字,而e或f必须是关键字:

def f(a, b, /, c, d, *, e, f):    print(a, b, c, d, e, f)

以下是有效的呼叫:

f(10, 20, 30, d=40, e=50, f=60)

但是,这些是无效的调用:

f(10, b=20, c=30, d=40, e=50, f=60)   # b cannot be a keyword argumentf(10, 20, 30, 40, 50, f=60)           # e must be a keyword argument

这种表示法的一个用例是,它允许纯Python函数完全模拟现有C编码函数的行为。例如,内置divmod()函数不接受关键字参数:

def divmod(a, b, /):    "Emulate the built in divmod() function"    return (a // b, a % b)

另一个用例是在参数名称无用时排除关键字参数。例如,内置len()函数具有签名。这避免了尴尬的调用,例如:len(obj, /)

len(obj='hello')  # The "obj" keyword argument impairs readability

将参数标记为仅位置的另一个好处是,它允许将来更改参数名称而不会破坏客户端代码。例如,在statistics模块中,将来可能会更改参数名称dist。可以通过以下功能规范来实现:

def quantiles(dist, /, *, n=4, method='exclusive')    ...

由于左侧的参数/未作为可能的关键字公开,因此参数名称仍可用于**kwargs:

>>>

>>> def f(a, b, /, **kwargs):...     print(a, b, kwargs)...>>> f(10, 20, a=1, b=2, c=3)         # a and b are used in two ways10 20 {'a': 1, 'b': 2, 'c': 3}

这大大简化了需要接受任意关键字参数的函数和方法的实现。例如,以下是该collections模块中代码的摘录:

class Counter(dict):    def __init__(self, iterable=None, /, **kwds):        # Note "iterable" is a possible keyword argument

看到 有关完整说明,请参见PEP 570。

(由Pablo Galindo在bpo-36540中贡献。)

编译后的字节码文件的并行文件系统缓存

新的 PYTHONPYCACHEPREFIX设置(也可作为 )将隐式字节码缓存配置为使用单独的并行文件系统树,而不是每个源目录中的默认子目录。-X pycache_prefix__pycache__

缓存的位置报告在sys.pycache_prefix (None指示__pycache__ 子目录中的默认位置)。

(由Carl Meyer在bpo-33499中贡献。)

调试版本使用与发布版本相同的

不管是在发布模式还是调试模式下构建,Python现在都使用相同的ABI。在Unix上,当Python以调试模式构建时,现在可以加载以发布模式构建的C扩展和使用稳定ABI构建的C扩展。

现在,发行版本和调试版本与ABI兼容:定义 Py_DEBUG宏不再意味着该Py_TRACE_REFS宏,它引入了唯一的ABI不兼容性。该Py_TRACE_REFS宏,它增加了sys.getobjects()功能和PYTHONDUMPREFS 环境变量,可以使用新的 构建选项进行设置。(由Victor Stinner在bpo-36465中贡献。)./configure --with-trace-refs

在Unix上,除了Android和Cygwin之外,C扩展不再链接到libpython。现在,静态链接的Python可以加载使用共享库Python构建的C扩展。(由Victor Stinner在bpo-21536中贡献。)

在Unix上,当Python以调试模式构建时,import现在还将寻找以发布模式编译的C扩展以及使用稳定的ABI编译的C扩展。(由Victor Stinner在bpo-36722中贡献。)

要将Python嵌入到应用程序中,--embed必须传递一个新选项 以获取(将应用程序链接到libpython)。要同时支持3.8和更早版本的3.8,请首先尝试使用该命令,如果先前的命令失败,则回退到(无)。python3-config --libs --embed-lpython3.8python3-config --libs --embedpython3-config --libs--embed

添加pkg-config python-3.8-embed模块以将Python嵌入到应用程序中:includes 。要同时支持3.8和更早版本的3.8,请首先尝试使用该命令,如果先前的命令失败,则回退到(无)(用Python版本替换)。pkg-config python-3.8-embed --libs-lpython3.8pkg-config python-X.Y-embed --libspkg-config python-X.Y --libs--embedX.Y

另一方面,不再包含 。C扩展不得链接到libpython(Android和Cygwin除外,它们的情况由脚本处理);此更改是有意向后不兼容的。(由Victor Stinner在bpo-36721中贡献。)pkg-config python3.8 --libs-lpython3.8

f字符串支持=自记录表达式和调试

=在f-string中添加了一个说明符。f字符串(例如) f'{expr=}'将扩展为表达式的文本,等号,然后扩展为求值表达式的表示形式。例如:

>>>

>>> user = 'eric_idle'>>> member_since = date(1975, 7, 31)>>> f'{user=} {member_since=}'"user='eric_idle' member_since=datetime.date(1975, 7, 31)"

常用的f字符串格式说明符允许对表达式结果的显示方式进行更多控制:

>>>

>>> delta = date.today() - member_since>>> f'{user=!s}  {delta.days=:,d}''user=eric_idle  delta.days=16,075'

的=说明符将显示整个表达式所以可以示出的计算:

>>>

>>> print(f'{theta=}  {cos(radians(theta))=:.3f}')theta=30  cos(radians(theta))=0.866

(由Eric V. Smith和Larry Hastings在bpo-36817中贡献。)

PEP 578:Python运行时审核挂钩

PEP添加了“审核挂钩”和“已验证的打开挂钩”。两者都可以从Python和本机代码获得,从而允许使用纯Python代码编写的应用程序和框架利用额外的通知,同时还允许嵌入程序或系统管理员在始终启用审核的情况下部署Python版本。

看到 PEP 578详细信息。

PEP 587:Python初始化配置

的 PEP 587添加了新的C API以配置Python初始化,从而提供了对整个配置的更好控制和更好的错误报告。

常见问题答疑:

如何在Windows下运行Python程序?

这不一定是一个简单的问题。如果您已经熟悉从Windows命令行运行程序,那么一切似乎都是显而易见的。否则,您可能需要更多指导。

除非使用某种集成开发环境,否则最终将 在各种称为“ DOS窗口”或“命令提示窗口”的窗口中键入 Windows命令。通常,您可以通过搜索从搜索栏创建这样的窗口cmd。您应该能够识别出何时启动了这样的窗口,因为您将看到Windows“命令提示符”,通常如下所示:

C:\>

该字母可能有所不同,并且后面可能还有其他内容,因此您可能会很容易看到以下内容:

D:\YourName\Projects\Python>

取决于计算机的设置方式以及您最近对计算机所做的其他操作。一旦启动了这样的窗口,就可以很好地运行Python程序。

您需要意识到Python脚本必须由另一个称为Python 解释器的程序处理。解释器读取您的脚本,将其编译为字节码,然后执行字节码以运行您的程序。那么,如何安排解释器处理Python?

首先,您需要确保命令窗口将单词“ py”识别为启动解释器的指令。如果您打开了命令窗口,则应尝试输入命令py并按回车键:

C:\Users\YourName> py

然后,您应该看到类似以下内容:

Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32Type "help", "copyright", "credits" or "license" for more information.>>>

您已经以“交互模式”启动了解释器。这意味着您可以交互输入Python语句或表达式,并在等待时执行或评估它们。这是Python最强大的功能之一。通过输入一些您选择的表达式并查看结果来进行检查:

>>>

>>> print("Hello")Hello>>> "Hello" * 3'HelloHelloHello'

许多人将交互模式用作方便但高度可编程的计算器。当您想结束交互式Python会话时,请在输入a的同时调用该exit()函数或按住Ctrl键Z,然后按“ Enter”键以返回Windows命令提示符。

您可能还会发现,您有一个开始菜单项,例如开始Start程序‣Python 3.x‣Python(命令行),这会导致您>>>在新窗口中看到提示。如果是这样,则在您调用exit()函数或输入Ctrl-Z 字符后,该窗口将消失;Windows在窗口中运行单个“ python”命令,并在终止解释器时将其关闭。

现在我们知道该py命令已被识别,您可以为其提供Python脚本了。您必须提供Python脚本的绝对路径或相对路径。假设您的Python脚本位于您的桌面上,名为hello.py,并且您的主目录中很好地打开了命令提示符,因此您会看到类似以下内容的内容:

C:\Users\YourName>

因此,现在您将要求该py命令py通过在脚本路径后键入以下内容来将脚本提供给Python :

C:\Users\YourName> py Desktop\hello.py hello

如何使Python脚本可执行?

在Windows上,标准的Python安装程序已经将.py扩展名与文件类型(Python.File)关联,并为该文件类型提供了运行解释器()的打开命令。这足以使脚本在命令提示符下以“ foo.py”的身份可执行。如果您希望能够通过简单地键入'foo'而没有扩展名来执行脚本,则需要将.py添加到PATHEXT环境变量中。D:\Program Files\Python\python.exe "%1" %*

为什么Python有时需要很长时间才能启动?

通常,Python在Windows上的启动速度非常快,但偶尔也有错误报告称Python突然开始需要很长时间才能启动。这使您更加困惑,因为Python在其他配置相同的Windows系统上可以正常工作。

该问题可能是由问题机器上的病毒检查软件配置错误引起的。当某些病毒扫描程序配置为监视来自文件系统的所有读取时,会引入两个数量级的启动开销。尝试检查系统上病毒扫描软件的配置,以确保它们的配置确实相同。McAfee被配置为扫描所有文件系统读取活动时,是一个特别的冒犯者。

如何从Python脚本制作可执行文件?

有关distutils扩展的信息,请参见cx_Freeze,该扩展允许您从Python代码创建控制台和GUI可执行文件。 py2exe是构建基于Python 2.x的可执行文件的最流行的扩展,尚不支持Python 3,但正在开发中。

是一个*.pyd文件相同的DLL?

是的,.pyd文件是dll的文件,但是有一些区别。如果您有一个名为的DLL foo.pyd,则它必须具有一个函数PyInit_foo()。然后,您可以编写Python“ import foo”,Python将搜索foo.pyd(以及foo.py,foo.pyc),如果找到,将尝试调用PyInit_foo()以对其进行初始化。您不要将.exe与foo.lib链接,因为那样会使Windows要求该DLL存在。

请注意,foo.pyd的搜索路径是PYTHONPATH,与Windows用于搜索foo.dll的路径不同。另外,不需要foo.pyd即可运行程序,而如果将程序与dll链接,则该dll是必需的。当然,如果您想说foo.pyd是必需的。在DLL中,链接在源代码中用声明。在.pyd中,链接在可用功能列表中定义。import foo__declspec(dllexport)

如何将Python嵌入Windows应用程序?

将Python解释器嵌入Windows应用程序可以总结如下:

不要直接将Python构建到.exe文件中。在Windows上,Python必须是DLL才能处理本身就是DLL的导入模块。(这是第一个未记录的关键事实。)相反,链接到;。它通常安装在中。 NN是Python版本,对于Python 3.3,数字是“ 33”。pythonNN.dllC:\Windows\System

您可以通过两种不同的方式链接到Python。加载时链接表示针对,而运行时链接表示针对。(一般说明:是对应于的所谓的“ import lib” 。它仅定义链接器的符号。)pythonNN.libpythonNN.dllpythonNN.libpythonNN.dll

运行时链接大大简化了链接选项;一切都在运行时发生。您的代码必须使用Windows 例程加载。该代码还必须使用Windows 例程获取的指针使用访问例程和数据(即Python的C API)。宏可以使这些指针对调用Python C API中的例程的任何C代码透明。pythonNN.dllLoadLibraryEx()pythonNN.dllGetProcAddress()

Borland注意:首先使用Coff2Omf.exe 转换为OMF格式。pythonNN.lib

如果您使用SWIG,则很容易创建一个Python“扩展模块”,它将使应用程序的数据和方法可供Python使用。SWIG将为您处理几乎所有繁琐的细节。结果是链接到您的.exe文件的C代码 (!)您不必创建DLL文件,而且还简化了链接。

SWIG将创建一个初始化函数(C函数),该函数的名称取决于扩展模块的名称。例如,如果模块的名称是leo,则init函数将称为initleo()。如果您应该使用SWIG阴影类,则init函数将称为initleoc()。这将初始化阴影类使用的几乎隐藏的帮助程序类。

您可以将第2步中的C代码链接到.exe文件的原因是,调用初始化函数等效于将模块导入Python!(这是第二个未记录的关键事实。)

简而言之,您可以使用以下代码通过扩展模块初始化Python解释器。

#include "python.h"...Py_Initialize();  // Initialize Python.initmyAppc();  // Initialize (import) the helper class.PyRun_SimpleString("import myApp");  // Import the shadow class.

Python的C API存在两个问题,如果您使用MSVC(用于构建pythonNN.dll的编译器)以外的其他编译器,这些问题将变得显而易见。

问题1:带有FILE *参数的所谓“非常高级”函数在多编译器环境中将不起作用,因为每个编译器对结构FILE的概念将有所不同。从实现的角度来看,这些是非常低级的功能。

问题2:在生成包装器以使函数无效时,SWIG生成以下代码:

Py_INCREF(Py_None);_resultobj = Py_None;return _resultobj;

las,Py_None是一个宏,它扩展为对pythonNN.dll中称为_Py_NoneStruct的复杂数据结构的引用。同样,此代码在多编译器环境中将失败。将此类代码替换为:

return Py_BuildValue("");

%typemap尽管我无法使它生效(我是完整的SWIG新手),但也许可以使用SWIG的命令自动进行更改。

在Windows应用程序内部使用Python Shell脚本建立Python解释器窗口不是一个好主意;生成的窗口将独立于您应用程序的窗口系统。相反,您(或wxPythonWindow类)应创建一个“本机”解释器窗口。将该窗口连接到Python解释器很容易。您可以将Python的I / O重定向到支持读取和写入的_any_对象,因此您所需要的只是一个包含read()和write()方法的Python对象(在扩展模块中定义)。

如何防止编辑器将制表符插入我的Python源代码?

FAQ不建议使用标签和Python样式指南, PEP 8,建议分布式Python代码有4个空格;这也是Emacs的python-mode默认设置。

在任何编辑器下,混合使用制表符和空格是一个坏主意。MSVC在这方面没有什么不同,并且可以很容易地配置为使用空格:选取“ 工具”‣“选项”‣“选项卡”,对于文件类型“默认”,将“标签大小”和“缩进大小”设置为4,然后选择“插入空格”单选按钮。

Python引发,IndentationError或者TabError制表符和空格混合导致前导空格出现问题。您也可以运行该tabnanny模块以批处理方式检查目录树。

如何检查按键是否畅通无阻?

使用msvcrt模块。这是Windows的标准扩展模块。它定义了一个功能kbhit(),该功能检查是否存在键盘击键,并getch()获得一个字符而不回显它。

软件标签: Python 编程

软件截图

面向对象编程脚本(Python) v3.8.3官方版

其他版本下载

发表评论

昵称:
表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
TOP
软件下载