如何用六个步骤封装Python代码包

【Python】封装 封装是面向对象编程(OOP)的三大基本特性之一(另外两个是继承和多态)。它将数据(属性)和操作数据的方法(行为)捆绑在一起,形成一个独立的、有边界的单元,通常称为“对象”或“类”。封装的核心思想是“信息隐藏”:对象的内部实现细节对外部是不可见的,外部只能通过对象提供的公共接口与它进行交互。这有助于提高代码的模块性、可维护性和安全性。在许多强类型面向对象语言(如Java、C++)中,封装通常通过关键字(如, )强制实现,严格限制了对类内部成员的直接访问。然而,Python在这方面采取了截然不同的哲学:“我们都 阅读详情

假设你很喜欢用同一段Python代码,里面有几个相关的小型函数,或者是含有几百行代码的中型模块。程序员可能会把它复制到不同的项目或存储库中,或者从特别设置的实用工具代码文件夹中导入这段代码。

这很正常。程序员在编写代码的过程中都会不断积累这些个性化的小工具。相比其他编程语言来说,Python更容易积累这些语句——这些代码非常实用。

如果无需复制,就可以轻松导入自己开发的小工具,并进行更新和维护,岂不是更好吗?如果不依赖于特定的文件或路径,让这些代码在不同的环境、机器和语境中都适用?如果可以将这些个性化工具版本化,并使相关代码清楚地反映出其依赖性呢?如果这个工具能为大众所用呢?

没错,它都可以做到。

当然,这个概念不是第一次提了。这就是通常在编程语言中使用模块、包和库的原因,特别是在Python的开发环境中。它的实现可使Python功能更加强大;只需简单的pip install 和 import就能获得BeautifulSoup的html解析功能或pandas的数据帧处理功能。

另外,人人都可以将自己的代码在PyPI上编写和发布(PyPI是Python包的官方索引:http://pypi.python.org/pypi),使它们与sklearn、requests或delorean(都是非常实用、流行的Python包)一样简单易得。以下是它的几点优势:

· 即使只有很少人使用,共享自己的代码仍是一件很有趣的事;程序员可以在工作、社群活动或求职面试中分享并展示自己的劳动成果。

· 通过强制性地整理和记录代码,公开给同行进行评价,从而改进代码。

· 它还能弥补社群的不足。你会惊讶地发现,很多人会注意到你的序列化十分高效,比如将HTTP报头序列化到JSON。或者发现自己创建的用来验证输入MongoDB查询文档修饰符的工具有多么实用。

心动了吗?忘记那个旧的Python模块,开始制作小型Python包吧。

图1: Python dust

步骤一:命名

首先是命名。好的名字通常比较简短,便于在pip install 或 import 完成之后输入(尽管现在已经出现了“自动输入”);还要包含足够的信息便于理解,或者在安装完成后之后提示其中的内容。

 

 

requests负责处理HTTP请求、delorean负责日期和时间,sklearn负责提供机器学习框架,这些都是很好的例子。在为pandas管道包(由于pandas 通常以pd这样较短别名导入,故使用pdpipe:https://github.com/shaypal5/pdpipe)和缓存包(cachier:https://github.com/shaypal5/cachier)命名时,笔者也尝试过这些例子。

不过老实说,这些并不是固守的规则。流行的Python包都有pandas、 keras、 django、 boto、 jinja、 flask 和 pytorch等名称,大家能记住这些名字,所以读者也可以使用任何简短且可读的名称(例如,由于可读性问题,笔者将“Scikit-Learn Wrappers for FastText”缩写成了skift)。本文以chocobo为例。

步骤二:确定代码包的基本结构

接下来,通过几个简短的步骤,制作一种通用的结构:

1.用代码包的准确名称创建一个Github存储库,不要使用驼峰式或过多的个人发挥。然后在本地进行复制。

2.在该存储库中新建一个文件夹,用代码包的准确名称命名;这就是保存代码包的文件夹。这是一种规范,只需记住外部的chocobo 文件夹(在本例中)就是存储库的文件夹,而内部的chocobo 文件夹是包的文件夹。

3.将自己的模块和涉及到的任何其他模块放在内部的chocobo文件夹中。如果存在缺失的部分,请添加__init__.py 文件。

4.将用户直接调用的重要对象(通常是函数)从各自的模块中导入至__init__.py文件。有了代码包的命名空间,就可以使用这些函数、分类和变量了。如果愿意,也可以使用代码包的API。

5.虽然不是强制规定,笔者强烈建议在代码包或在存储库的根目录中都应包含一个 .gitignore 文件。

示例:https://github.com/github/gitignore/blob/master/Python.gitignore

现在有了一个结构,可以添加不同类型的文件组成代码包;内部文件夹保存的是包的代码,外部文件夹保存的是辅助包文件和其他与存储库相关的文件。

因此,初始模块chocobo.py如下所示:

"""My chocobo cooking script."""

import os

def chocobo_roast(num_guests, hotness_level):

# amazing python code here

新建存储库文件夹如下所示:

chocobo/

chocobo/

__init__.py

chocobo.py

.gitignore

__init__.py 文件应如下所示:

"""chocobo is a python package for delicious Chocobo recipes."""

from .chocobo import (

chocobo_roast,

)

那么在完成封装之后,chocobo包可以有这样的使用方法:

"""I'm a script or a different package using chocobo."""

import chococbo

def my_feast(num_guests):

snacks = bobbish()

main_course = chocobo.chocobo_roast(num_guests, 0)

dressing = szechuan_chicken_mcnugget_sauce()

以上就是一些要点。

步骤三:许可问题

使用共享许可发布代码是较为可取的;如果要将自己的代码公开分享,程序员会想要在保留版权的前提下得到重用代码的许可,或者让那些扩展自己代码的人保证衍生代码可以自由使用。获得许可能轻松解决这些问题。

对于无足轻重的小项目,可以考虑MIT许可(https://choosealicense.com/licenses/mit/)。choosealicense.com(https://choosealicense.com/)提供了很多GitHub和开源社区中的实用建议。

无论选择哪种许可,都比根本不用要好。很多时候,在没有许可的情况下公开代码还不如不公开;如果程序员不明确自己对代码的所有权,大多数公司会因为可能造成的法律纠纷而放弃,从而失去许多潜在用户。

选择许可后,在存储库中创建LICENSE许可文件(不需要文件扩展名),并导入所选许可的确切文本。

步骤四:安装文件

现在创建Python封装工具所需的基本文件(以setuptools为例);setup.py.setup.py 包含了构建和发行时使用的实际指令。

下面是一个初始模板(别担心,稍后会进行详细检查)

"""Setup for the chocobo package."""

import setuptools

with open('README.md') as f:

README = f.read()

setuptools.setup(

author="Shay Palachy",

author_email="shay.palachy@gmail.com",

name='chocobo',

license="MIT",

description='chocobo is a python package for delicious chocobo recipes.',

version='v0.0.3',

long_description=README,

url='https://github.com/shaypal5/chocobo',

packages=setuptools.find_packages(),

python_requires=">=3.5",

install_requires=['requests'],

classifiers=[

# Trove classifiers

# (https://pypi.python.org/pypi?%3Aaction=list_classifiers)

'Development Status :: 4 - Beta',

'License :: OSI Approved :: MIT License',

'Programming Language :: Python',

'Programming Language :: Python :: 3.5',

'Programming Language :: Python :: 3.6',

'Topic :: Software Development :: Libraries',

'Topic :: Software Development :: Libraries :: Python Modules',

'Intended Audience :: Developers',

],

)

首先,导入setuptools。这是一个非常有用代码包,可轻松对Python包进行发行,即使它不包括在标准库中(类似的distutils是比不了的),它仍然是当今Python包发行的标准,应该牢记于心。本文只使用了setuptools包中的两个函数:setup和find_packagges。

在导入setuptools之后,调用setup()函数之前,只需将README.md 文件的内容读入到全局变量 README中即可。

然后只需通过以下变量调用setuptools.setup() 函数即可:

· author:输入姓名。

· author_email:输入邮箱。

· name:代码包的名称,在本例中为“chocobo”。

· license:在本例中为字符串“MIT”,或选择其他许可证。

· description:代码包的简短介绍,控制在一行以内。例如:“chocobo代码包是制作美味chocobo的食谱”

· version:表示封装的当前版本的字符串。笔者在之后的文章中会介绍更简洁的处理方法,但是目前,只需要在想要发布新版本时手动增加一个数字就可以了。通常的做法是将版本号前加入字母V,因此v1是第一个版本的版本字符串,但笔者建议将v0.0.1 视为等效版本字符串并使用此格式。后文将详细介绍这种做法的意义。

· long_description:表示README的内容。该部分是代码包的详细描述。也就是该页面PyPI的内容(示例:https://pypi.org/project/pdpipe/)。

· url:可链接到代码包的主页。如果读者没有专用的站点,那么存储库的URL是一个不错的选择。

· packages: 又一次提到了setuptools!根据命令,这个参数获取要生成和发行/安装的所有代码包的名称数组。从技术上讲,可以直接使用[“chocobo”]这个名字,但是最好是将其通用化,并使用setuptools 函数,它能处理更复杂的包和存储库结构。有两个可选参数可以作为输入数据,where 和exclude,但在这里忽略不计。作为结果,where可链接至安装文件所在的目录,包括所有子目录,一般来说这样已经足够了。

· python_requires: 如果你的电脑支持Python的所有版本,就不必顾及此参数。如果不能,应该选择一个适当的值。从技术上讲,笔者不赞成使用未经测试的版本,但保险期间目前我们可以进行适当的假设:

(1) 如果读者正在使用Python2,特别是Python2.7版本,可以得出以下两点结论:(a)你独树一帜,十分优秀(b)你的电脑配置只需支持Python2.7即可,所以可以使用“>=2.7”这个字符来编辑这个参数。另外,时代在进步,试试Python3吧。

(2) 如果读者使用的是Python3,那么任何Python版本都大于或等于用来开发代码包的版本。以此类推,如果使用的是Python3.5,那么应该设置成“>=3.5”。

· install_requires: 此处列出的是所有非标准库代码包的使用前提。例如,如果chocobo 需要requests和 pytz 才能运行的话,那么该参数应设置为:[“ requests”,“pytz”]。

· classifiers: 连同其他成千上万个代码包一起,你的代码包也会很快PyPI上线。为了进行区分,作者可以向PyPI提供一个列表,列出trove分类器来对每个版本进行分类,描述其用途、支持的系统和开发进度。然后,社区成员可以使用这些标准化的分类器,根据自己的需求来查找项目(尽管不确定谁会进行这项操作)。

这里有所有可能用到的分类器:https://pypi.python.org/pypi?%3Aaction=list_classifiers

建议从以下几个开始:

- “Development Status :: 3 — Alpha”

- “License :: OSI Approved :: MIT License”

- “ Programming Language :: Python”

- “ Programming Language :: Python :: 3.5”

- “ Programming Language :: Python :: 3.6”

- “ Programming Language :: Python :: 3.7”

- “Topic :: Software Development :: Libraries”

- “Topic :: Software Development :: Libraries :: Python Modules”

- “Intended Audience :: Developers”

以上就是这一环节的全部内容。

 

图2:选择trove分类器后的艾斯·文图拉

步骤五:建立发行文件

Python包位于发行文件中,这些文件会统一被上传到一个服务器中(通常是PyPI全局服务器),供公众下载。

本文不会详细介绍发行格式。笔者将使用标准方法(https://packaging.python.org/tutorials/packaging-projects/)构建两个文件:源发行文件(基本上包含了代码包)和wheel发行文件(wheel build distribution file)。

首先,确保安装了最新版本的setuptools 以及 wheel:

python3 -m pip install --user --upgrade setuptools wheel

要构建发行文件,只需在setup.py所在的存储库的根目录中运行以下命令:

python setup.py sdist bdist_wheel

在这一步,需要Python运行setup.py这个脚本,并向它发送两个参数,生成源文件(参数sdist),以及wheel工具来构建发行文件(参数bdist_wheel)。

运行此命令时,将在调用目录中创建三个文件夹: build, dist 和 chocobo.egg-info。对于.gitignore 文件来说,这三个可以忽略不计。如果这些目录已经存在(例如,该命令之前已经运行过了,最好用rm -rf build dist将这些目录删除掉,因为dist 下的任何有效代码包文件都将被上传。

要上传的两个文件位于dist 文件夹中:分别为chocobo-0.0.3-py-none.any.whl (构建发行;是一个wheel 文件)和chocobo-0.0.3.tar.gz (源发行;是一个压缩的tar 文件)。创建成功后,我们继续上传的步骤!

步骤六:上传

剩下的步骤就是将代码包上传到PyPI全局服务器!然而,用户必须先在PyPI网站上注册。按照注册的步骤填写用户名和密码。

如果想在上传到PyPI全局服务器之前测试包,程序员也可以在测试PyPI网站上注册一个用户。

现在,用于上传的Python包将在.pypirc文本文件中查找PyPI用户名和密码(通过PyPI服务器进行验证),该文件通常位于主文件夹中。创建后按如下所示进行填写(testpypi 部分视具体情况而定):

[distutils]

index-servers =

pypi

testpypi

[pypi]

username: teapot48

password: myPYPIpassword

[testpypi]

repository: https://test.pypi.org/legacy/

username: teapot48

password: MYtestPYPIpassword

本文依照最新的方法将文件上传到PyPI服务器中,并使用twine(上传Python包的实用工具),而不是使用过时的python setup.py upload 。只需运行:

twine upload dist/*

如果想在PyPI服务器上进行测试,只需运行 twine upload — repository testpypi dist/*

不论如何,上传.whl 文件时都应该能看到一个进度条,上传.tar.gz 文档时应该也能看到一个进度条,然后上传就完成了。

现在可以在PyPI官方网站上看到自己的Python包页面了,大家也都能看到!

示例:https://pypi.org/project/birch/

图3:PyPI网站上包页面的示例

 

 

 

Python教程:一文了解Python封装 在 Python 中,封装是面向对象编程(OOP)的重要特性之一。封装的主要目的在于将对象的状态(属性)和行为(方法)结合在一起,并隐藏内部实现细节,保护对象的完整性。本文将从基础到深入,带你全面理解 Python 的封装技术,并通过实战案例加深理解。 阅读详情

相关推荐

Python 中的封装详解

隐藏实现细节:封装隐藏了对象内部的实现细节,外部只暴露必要的接口。这种隐藏实现使得对象的使用者不需要关心对象内部是如何工作的。保护对象的状态:通过封装,我们可以控制对象的属性,限制外部对属性的修改,从而保持对象的内部状态的一致性和有效性。提供接口:封装通过方法提供给外部访问对象的操作接口,确保对象的行为和状态的有效性。封装使得对象的内部细节对外部是透明的,外部只能通过定义好的方法来访问和操作对象的状态。

m0_62599305的博客 1796

Python中封装代码的技巧

在这个例子中,我们定义了一个名为`Student`的类,它有两个私有属性——`__name`和`__age`。我们还定义了四个方法——`get_name()`、`set_name()`、`get_age()`和`set_age()`——用于访问和修改这些属性的值。公共变量和方法可以从类的任何实例中访问,而私有变量和方法只能从类内部访问。3. 使用“getter”和“setter”方法:在Python中,我们可以使用“getter”和“setter”方法来访问和修改类中的变量。

zswjj95的博客 3466

如何通过六个步骤编程实现删除操作

无论是删除文件、删除数据库记录还是删除列表中的元素,掌握删除操作的方法对于开发者来说都是至关重要的。确定要删除的对象是什么,以及删除的条件是什么。例如,如果要删除一个列表中的元素,需要知道要删除的元素是什么,以及如何判断某个元素符合删除条件。测试用例应该包括不同的场景,例如删除存在的元素、删除不存在的元素等。无论是删除列表中的元素,还是执行其他类型的删除操作,这个基本的步骤都是通用的。希望本文对你有所帮助!在确保代码正确性的前提下,运行删除操作的代码。根据需求和所选的编程语言,编写相应的删除操作代码。

ByteEchoX的博客 430

Python封装——如何把python代码打包成一个可执行的.exe文件,Pyinstaller

Pyinstaller可以打包Win、Linux、MacOS下的python程序,在什么环境下打包的就是什么平台的程序。相对来看,Pyinstaller打包的程序体积大、安全性稍差(容易反编译),但是上手相对简单一些。

Arya的博客,专注后端领域 1万+

【STABLE_BASELINE3】强化学习算法实战:模型的保存,读取,再训练

STABLE-BASELINE3,模型读取,再训练:有时候需要在已经训练好的模型基础上进行再次训练。

Kiek17的博客 4867

企业微信审批流开发避坑指南:从零搭建自定义审批模板(含完整代码)

本文为企业微信审批流开发提供了从零搭建自定义审批模板的完整指南。通过对比内置模板与自建引擎的优劣,详细阐述了利用企业微信开放API和自建应用实现高度灵活审批流程的方案。文章重点解析了前端JS-SDK安全调用、后端签名生成与回调处理的核心代码,并分享了流程引擎设计、安全加固及性能监控等实战经验,帮助企业开发者避开常见陷阱,构建贴合业务的自定义审批系统。

weixin_28358083的博客 965

六个步骤,封装你最爱的Python代码包!

全文共7134字,预计学习时长14分钟 假设你很喜欢用同一段Python代码,里面有几个相关的小型函数,或者是含有几百行代码的中型模块。程序员可能会把它复制到不同的项目或存储库中,或者从特别设置的实用工具代码文件夹中导入这段代码。 这很正常。程序员在编写代码的过程中都会不断积累这些个性化的小工具。相比其他编程语言来说,Python更容易积累这些语句——这些代码非常实用。 如果无需复制,就...

读芯术的博客 2105

一文带你弄懂thermal governor IPA

当current temp < target temp时,使用k_pu,当current temp >= target temp时,使用k_po。如果current_temperature = switch_on_temp时,则k_p = k_pu,这时Pmax。如果current_temperature = target_temp时,则k_p = k_po,这时Pmax。2、解析dts,获得switch_on_temp和target_temp。3、初始化k_pu/k_po/k_i/k_d的常数。

yxw0609131056的博客 1245

python 封装_封装Python代码包的六个步骤!现在就记住

全文共7134字,预计学习时长14分钟假设你很喜欢用同一段Python代码,里面有几个相关的小型函数,或者是含有几百行代码的中型模块。程序员可能会把它复制到不同的项目或存储库中,或者从特别设置的实用工具代码文件夹中导入这段代码。 这很正常。程序员在编写代码的过程中都会不断积累这些个性化的小工具。相比其他编程语言来说,Python更容易积累这些语句——这些代码非常实用。如果无需复制,就可以轻松导入自...

weixin_39970994的博客 1664

一文带你完成ARMv8架构中的cache知识点

【摘要】 在最初开发ARM架构时,处理器的时钟速度和内存的访问速度大致相同。今天的处理器内核要复杂得多,其时钟速度可以快上几个数量级。但是,外部总线和内存设备的频率并没有扩大到同样的程度。有可能实现小块的片上SRAM,它可以以与内核相同的速度运行,但是与标准的DRAM块相比,这种RAM非常昂贵,因为后者的容量可以达到数千倍。在许多基于ARM处理器的系统中,访问外部存储器需要几十甚至几百个内核周期。 cache的技术背景 在最初开发ARM架构时,处理器的时钟速度和内存的访问速度大致相同。今天的处.

ABCCloud的博客 1853

1个PID回路如何连接2个执行器(算法和代码)

我们先看下位置型PID的控制框图:2、PID是基于error的控制 所以反馈信号跳动、干扰非常大的话,对PID的闭环控制影响是非常大的,所以对于反馈信号、一定要抗干扰和滤波处理。3、下图是增量型PID的控制框图:4、一个PID输出回路如何连接2个执行器?(有些系统会设置热阀和冷阀才能满足控制要求)。

RXXW_Dor的博客 1810

python的包可以直接复制嘛_封装Python代码包的六个步骤!现在就记住

全文共7134字,预计学习时长14分钟假设你很喜欢用同一段Python代码,里面有几个相关的小型函数,或者是含有几百行代码的中型模块。程序员可能会把它复制到不同的项目或存储库中,或者从特别设置的实用工具代码文件夹中导入这段代码。这很正常。程序员在编写代码的过程中都会不断积累这些个性化的小工具。相比其他编程语言来说,Python更容易积累这些语句——这些代码非常实用。如果无需复制,就可以轻松导入自己...

weixin_35794835的博客 4097

rk3576 适配摄像头 (mipi 双摄)

RK3576 自带两个 4-Lane DPHY 和一个 DCPHY CSI 接口,可以连接 4lane 的双摄像头,最直接的方式就是充分利用其两个 D-PHY 接口。次选方案是 DCPHY + DPHY方案,更次之方案是单DPHY,设置成分离模式,连接两颗摄像头。

weixin_35723192的博客 387

julia有 pytorch包吗_六个步骤,封装你最爱的Python代码包

全文共7134字,预计学习时长14分钟假设你很喜欢用同一段Python代码,里面有几个相关的小型函数,或者是含有几百行代码的中型模块。程序员可能会把它复制到不同的项目或存储库中,或者从特别设置的实用工具代码文件夹中导入这段代码。 这很正常。程序员在编写代码的过程中都会不断积累这些个性化的小工具。相比其他编程语言来说,Python更容易积累这些语句——这些代码非常实用。如果无需复制,就可以轻松导入自...

weixin_33850805的博客 187

SIMATIC WINCC V8.0安装教程(Win11系统)

SIMATIC WINCC V8.0安装教程(Win11系统)

Robot_PLC_HMI_Automation 9034

华为OD机试 - 整型数组按照个位数排序(Python/JS/C/C++ 双机位C卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。给定一个非空数组(列表),其元素数据类型为整型,请按照数组元素十进制最低位从小到大进行排序,十进制最低位相同的元素,相对位置保持不变。当数组元素为负值时,十进制最低位等同于去除符号位后对应十进制值最低位。给定一个非空数组,其元素数据类型为32位有

学Java,找哪吒 399

python 类的封装

一、什么是封装 在程序设计中,封装(Encapsulation)是对具体对象的一种抽象,即将某些部分隐藏起来,在程序外部看不到,其 含义是其他程序无法调用。 想要了解封装,就离不开“私有化”。也就是类的属性或者函数限制到限制在类中使用,而外部无法调用。 二、为什么要用封装 1、封装数据:保护隐私 2、封装方法:隔离复杂度(只保留部分接口对外使用) 三、如何用封装 1 封装语法 已双下划线开头: 封装方法:__func 封装属性: __attr class student(object):

python学习者的博客 7453

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Python基础之封装

在程序设计中,封装(Encapsulation)是对具体对象的一种抽象,即将某些部分隐藏起来,在程序外部看不到,其含义是其他程序无法调用。

m0_72557783的博客 8647

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

python的封装

引用地址:https://www.cnblogs.com/feeland/p/4415645.html 封装的目的是,保护隐私,把不想让别人知道的东西封装起来。 定义了Student类及实例化,每个实例都拥有各自的name和score。现在若需要打印一个学生的成绩,可定义函数 print_score(),该函数为类外的函数。 class Student(object): def __ini...

吾将上下而求索 9754

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

怎么python程序封装?此文详解

python程序封装1 步骤如下: (1)安装pyinstaller,可以直接在cmd命令行中,输入命令“pip install pyinstaller”,安装pyinstaller (2)进入py代码的保存目录,这里py代码放在“E:\python学习\python_work” (3)cmd,输入命令:e:,进入e盘 (4)继续输入:E:\python学习\python_work,进入目录:python_work (5)执行命令:pyinstaller -F m3u8转mp4工具.py (6)执行成功后,

babymua的博客 1万+

python封装exe+exe封装服务

python封装exe+exe封装服务 python封装exe+exe封装服务 一、python封装exe 安装pyinstaller: 打包 二、exe封装为服务 使用SC指令封装服务 使用nssm封装服务 一、python封装exe 本来使用的python版本是python3.7.0,是当前的最新版本,但是使用pyinstaller打包.py程序为exe,生成的...

DARKMOON的专栏 4101

python封装成exe

最近写了一个小小的程序,需要进行封装exe,为了简单,就直接用了pyinstaller这个模块,对于python3.6版本的童鞋来说,简直方便的不要。下面就给大家介绍一下如何用pyinstaller去封装程序为exe程序。 首先,需要安装一下pip这个应用,这个已经在前面的文章中说过了,windows和linux都有请借鉴windows和linux。 第二步,安装好pip之后,在cmd命令窗口中输...

为援不可图 7万+

python参数化后,将登录步骤封装成函数,方便调用

参数化后,将登录步骤封装成函数,方便调用

weixin_62234706的博客 823

python中封装的实现方法_python 封装

1 封装封装,即隐藏对象的属性和实现细节,仅对外公开接口。2 为什么要封装封装数据:可以保护隐私(比如银行卡号、密码)封装方法:隔离复杂度(把内部具体的复杂实现过程隐藏起来。)在python中因为没有像java中那样的接口实现。所以我们这里说的向外提供的接口,是函数,也叫接口函数。3 封装有哪些表现3.1 python自带的封装创建一个类或对象,就会创建二者的命名空间,只需要用类名.或对象.的方式...

weixin_39794130的博客 1054
上一篇: PyTorch彻底放弃Python2
下一篇: 如何避开Python下载安装的坑?
python之光
博客等级 码龄7年 114粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值