2 张孝峰 Python与云 AWS的Python原生应用浅析
Python与云 ——AWS的Python原生应用浅析 张孝峰 亚马逊AWS资深解决方案架构师 Python 30周年 Python发展时间线 2019/10 v3.8 v2.7.17 开始实现 1989/12 v0.9.0 1991/2 v1.0.0 1994/1 v2.0 2000/10 v2.5 2006/9 v2.6 2008/10 v3.0 2008/12 AWS同样功能丰富 AWS向客户提供超过165项功能全面的服务 涵盖计算、存储、数据库、联网、分析、机器人、 机器学习与人工智能、物联网、移动、安全、混 合云、虚拟现实与增强现实、媒体,以及应用开 发、部署与管理等方面。 如何管理和使用海量的云API Amazon Athena Amazon Redshift 超过165项服务 数千个不同的API AWS Tools and SDKs • Python Portal Task 12要素应用宣言 尽可能利用现代化的云平台 • 无需猜测容量 • 快速创新,低风险试错 • 摆脱无差异化的工作 • 数分钟全球化部署 Infrastructure as Code AWS CloudFormation 这个样例模板,通过500多行JSON代码完整的描述了一个LAMP网站 包括私有网络架构,数据库,和根据业务量自动伸缩的能力 Infrastructure0 码力 | 42 页 | 8.12 MB | 1 年前3Flask入门教程
创建远程仓库 访问新建仓库页面(导航栏“+” - New repository),在“Repository name”处填写仓 库名称,这里填“watchlist”即可,接着选择仓库类型(公开或私有)等选项,最后 点击“Create repository”按钮创建仓库。 因为我们已经提前创建了本地仓库,所以需要指定仓库的远程仓库地址(如果还没 有创建,则可以直接将远程仓库克隆到本地): 都可以访问到。 Web 程序通常有两种部署方式:传统部署和云部署。传统部署指的是在使用物理主 机或虚拟主机上部署程序,你通常需要在一个 Linux 系统上完成所有的部署操作; 云部署则是使用其他公司提供的云平台,这些平台为你设置好了底层服务,包括 Web 服务器、数据库等等,你只需要上传代码并进行一些简单设置即可完成部署。 这一章我们会介绍使用云平台 PythonAnywhere 来部署程序。 部署前的准备 2.7,那么需要使用 pip 来执行安装 Pipenv 的命令;打开 Python Shell 时使用 python 命令,而不是 python3。 提示 如果你在 GitHub 上的仓库类型为私有仓库,那么需要将 PythonAnywhere 服 务器的 SSH 密钥添加到 GitHub 账户中,具体参考第 1 章“设置 SSH 密钥”小节。 下面我们在项目根目录创建 .env 文件,并写入生产环境下需要设置的两个环境变0 码力 | 127 页 | 7.62 MB | 1 年前3Python3 基础教程 - 廖雪峰
score = 59 >>> bart.score 59 如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线 __,在 Python 中,实例的变量名如果以__开头,就变成了一个私有变量 (private),只有内部可以访问,外部不能访问,所以,我们把 Student 类改一改: class Student(object): def __init__(self Internet Protocol Suite)就是通用协议标准。Internet 是由 inter 和 net 两个单词组 合起来的,原意就是连接“网络”的网络,有了 Internet,任何私有网络, 只要支持这个协议,就可以联入互联网。 因为互联网协议包含了上百种协议标准,但是最重要的两个协议是 TCP 和 IP 协议,所以,大家把互联网的协议简称 TCP/IP 协议。 Python3 Linux 服务器 要部署到 Linux,首先得有一台 Linux 服务器。要在公网上体验的同学, 可以在 Amazon 的 AWS 申请一台 EC2 虚拟机(免费使用 1 年),或者 使用国内的一些云服务器,一般都提供 Ubuntu Server 的镜像。想在本 地部署的同学,请安装虚拟机,推荐使用 VirtualBox。 我们选择的 Linux 服务器版本是 Ubuntu Server 140 码力 | 531 页 | 5.15 MB | 1 年前3Python 标准库参考指南 3.13
在,则如果提供了 default 则返回该值,否则将引发AttributeError。name 不必是一个 Python 标 识符 (参见setattr())。 � 备注 由于 私有名称混合发生在编译时,因此必须手动混合私有属性(以两个下划线打头的属性)名 称以使用getattr() 来提取它。 globals() 返回实现当前模块命名空间的字典。对于函数内的代码,这是在定义函数时设置的,无论函数在哪 __getattribute__() 中或是通过 __slots__。一个名称不为标识符的属性将不可使用点号标记 来访问,但是可以通过getattr() 等来访问。 � 备注 由于 私有名称混合发生在编译时,因此必须手动混合私有属性(以两个下划线打头的属性)名 称以便使用setattr() 来设置它。 class slice(stop) class slice(start, stop, step=None) code 是否属于 tableC.2 (控制字符,C.2.1 和 C.2.2 的并集)。 stringprep.in_table_c3(code) 确定 code 是否属于 tableC.3 (私有使用)。 stringprep.in_table_c4(code) 确定 code 是否属于 tableC.4 (非字符码位)。 stringprep.in_table_c5(code) 确定0 码力 | 2246 页 | 11.74 MB | 9 月前3Python 标准库参考指南 3.13
在,则如果提供了 default 则返回该值,否则将引发AttributeError。name 不必是一个 Python 标 识符 (参见setattr())。 � 备注 由于 私有名称混合发生在编译时,因此必须手动混合私有属性(以两个下划线打头的属性)名 称以使用getattr() 来提取它。 globals() 返回实现当前模块命名空间的字典。对于函数内的代码,这是在定义函数时设置的,无论函数在哪 __getattribute__() 中或是通过 __slots__。一个名称不为标识符的属性将不可使用点号标记 来访问,但是可以通过getattr() 等来访问。 � 备注 由于 私有名称混合发生在编译时,因此必须手动混合私有属性(以两个下划线打头的属性)名 称以便使用setattr() 来设置它。 class slice(stop) class slice(start, stop, step=None) code 是否属于 tableC.2 (控制字符,C.2.1 和 C.2.2 的并集)。 stringprep.in_table_c3(code) 确定 code 是否属于 tableC.3 (私有使用)。 stringprep.in_table_c4(code) 确定 code 是否属于 tableC.4 (非字符码位)。 stringprep.in_table_c5(code) 确定0 码力 | 2242 页 | 11.73 MB | 9 月前3Python 标准库参考指南 3.11.10
存在,则如果提供了 default 则返回该值,否则将引发AttributeError。name 不必是一个 Python 标识符 (参见setattr())。 备注: 由于 私有名称混合发生在编译时,因此必须手动混合私有属性(以两个下划线打头的属性) 名称以使用getattr() 来提取它。 13 The Python Library Reference, 发行版本 3.11.10 globals() __getattribute__() 中或是通过 __slots__。一个名称不为标识符的属性将不可使用点号标 记来访问,但是可以通过getattr() 等来访问。 备注: 由于 私有名称混合发生在编译时,因此必须手动混合私有属性(以两个下划线打头的属性) 名称以便使用setattr() 来设置它。 class slice(stop) class slice(start, stop, step=None) code 是否属于 tableC.2 (控制字符,C.2.1 和 C.2.2 的并集)。 stringprep.in_table_c3(code) 确定 code 是否属于 tableC.3 (私有使用)。 6.6. stringprep --- 因特网字符串预备 153 The Python Library Reference, 发行版本 3.11.10 stringprep.in_table_c4(code)0 码力 | 2248 页 | 11.10 MB | 9 月前3Python 标准库参考指南 3.12
在,则如果提供了 default 则返回该值,否则将引发AttributeError。name 不必是一个 Python 标 识符 (参见setattr())。 � 备注 由于 私有名称混合发生在编译时,因此必须手动混合私有属性(以两个下划线打头的属性)名 称以使用getattr() 来提取它。 globals() 返回实现当前模块命名空间的字典。对于函数内的代码,这是在定义函数时设置的,无论函数在哪 __getattribute__() 中或是通过 __slots__。一个名称不为标识符的属性将不可使用点号标记 来访问,但是可以通过getattr() 等来访问。 � 备注 由于 私有名称混合发生在编译时,因此必须手动混合私有属性(以两个下划线打头的属性)名 称以便使用setattr() 来设置它。 class slice(stop) class slice(start, stop, step=None) code 是否属于 tableC.2 (控制字符,C.2.1 和 C.2.2 的并集)。 stringprep.in_table_c3(code) 确定 code 是否属于 tableC.3 (私有使用)。 stringprep.in_table_c4(code) 确定 code 是否属于 tableC.4 (非字符码位)。 stringprep.in_table_c5(code) 确定0 码力 | 2253 页 | 11.81 MB | 9 月前3Python 标准库参考指南 3.12
在,则如果提供了 default 则返回该值,否则将引发AttributeError。name 不必是一个 Python 标 识符 (参见setattr())。 � 备注 由于 私有名称混合发生在编译时,因此必须手动混合私有属性(以两个下划线打头的属性)名 称以使用getattr() 来提取它。 globals() 返回实现当前模块命名空间的字典。对于函数内的代码,这是在定义函数时设置的,无论函数在哪 __getattribute__() 中或是通过 __slots__。一个名称不为标识符的属性将不可使用点号标记 来访问,但是可以通过getattr() 等来访问。 � 备注 由于 私有名称混合发生在编译时,因此必须手动混合私有属性(以两个下划线打头的属性)名 称以便使用setattr() 来设置它。 class slice(stop) class slice(start, stop, step=None) code 是否属于 tableC.2 (控制字符,C.2.1 和 C.2.2 的并集)。 stringprep.in_table_c3(code) 确定 code 是否属于 tableC.3 (私有使用)。 stringprep.in_table_c4(code) 确定 code 是否属于 tableC.4 (非字符码位)。 stringprep.in_table_c5(code) 确定0 码力 | 2253 页 | 11.81 MB | 9 月前3Python 标准库参考指南 3.11.10
则如果提供了 default 则返回该值,否则将引发AttributeError。name 不必是一个 Python 标识符 (参 见setattr())。 备注: 由于 私有名称混合发生在编译时,因此必须手动混合私有属性(以两个下划线打头的属性)名 称以使用getattr() 来提取它。 globals() 返回实现当前模块命名空间的字典。对于函数内的代码,这是在定义函数时设置的,无论函数在哪里 __getattribute__() 中或是通过 __slots__。一个名称不为标识符的属性将不可使用点号标记 来访问,但是可以通过getattr() 等来访问。 备注: 由于 私有名称混合发生在编译时,因此必须手动混合私有属性(以两个下划线打头的属性)名 称以便使用setattr() 来设置它。 class slice(stop) class slice(start, stop, step=None) code 是否属于 tableC.2 (控制字符,C.2.1 和 C.2.2 的并集)。 stringprep.in_table_c3(code) 确定 code 是否属于 tableC.3 (私有使用)。 stringprep.in_table_c4(code) 确定 code 是否属于 tableC.4 (非字符码位)。 stringprep.in_table_c5(code) 确定0 码力 | 2399 页 | 11.19 MB | 9 月前3python3学习手册
#以双下划线开头的方法为private方法 __xxx__() #特殊方法,以双下划线开头及双下划线结尾 对象不可访问类的私有变量(以双下划线开头),但可用以下形式来 访问: 对象名._类名__私有属性名 ★第9章、异常处理 异常是python对象,表示一个错误,当程序发生异常时,需要捕获处 理它,否则程序会终止执行。 ①捕获异常可用try0 码力 | 213 页 | 3.53 MB | 1 年前3
共 100 条
- 1
- 2
- 3
- 4
- 5
- 6
- 10