万物之中, 希望至美.

「Python3学习笔记」读书笔记—字节数组

生物都是由细胞构成的,但在我们普通人眼中,并不会将鸡、鸭、狗、鸟这些动物当作细胞看待,因为对待事物的角度决定了我们更关心生物的外在形状和行为,而不是它的组织构成。 从计算机底层实现来说,所有的数据都是二进制字节序列。但为了更好地表达某个逻辑,计算机科学家们将数据抽象成不同的类型,犹如细胞和动物的关系。在编程语言中,对于字节序列,我们更关心的是它的存储和传输方式;而面向对象时,则着重于它的抽象属性。尽......

「Python3学习笔记」读书笔记—字符串

字符串字面量以成对的单引号(`)、双引号(”),或可跨行的三引号(”””)语法构成,自动合并相邻的字面量。字符串支持转义、八进制、十六进制,或 Unicode 格式字符。 使用单引号还是双引号,并没有什么特殊限制。如果文本内的引用文字使用双引号,那么外面用单引号可避免转义,更易阅读。 通常情况下,建议遵循多数编程语言惯例,使用双引号标示。 Python 3 中字符串存储的是 Unicode 文本,是不可变序列类型。而 Unicode 格式大小写分别表示 16 位( \u )和......

「Python3学习笔记」读书笔记--float类型

本文为「Python3学习笔记」一书的读书总结,以后每学习完一小节做一次记录。 在Python中 float 类型默认存储双精度浮点数(也就是其他语言中的 double ),可一表达16到17位浮点数。 >>> 1/3 0.3333333333333333 >>> 0.1234567890123456789 0.12345678901234568 从实现方式上来看,浮点数是以二进制的方式来存储十进制数的近似值。这就可能导致执行的结果与预期不符合,造成不一致缺陷。所以,在对精度有严格要求的场合,应该选择使用固定精度类型,如:decimal.Decimal 。 可通......

2018年5月27日 个人思考

最近因为临近毕业了,在学校做毕业答辩准备,顺带有时间可以思考一下工作以来的生活。 怎么说呢,相对上一份工作的硬性规定九九六,现在所在公司的工作时间是真的很轻松,每天6点就可以下班,也不需要加班,这样的生活虽然工资不高但真的很轻松,也使我陷入了一种舒适区,若不是这次回学校思考后,幡然醒悟,不然还不知道要在这种状态下沉迷多久。 先记录一下每天安排: 上午,高级工程师安排工作,编码、调试、解Bug,下班,然后......

Python连接字符串优先使用join而不是+

字符串处理在大多数编程语言中都是不可避免的,而字符串的连接在编程的过程中会经常遇到。Python 中的字符串与其他语言的字符串有点不一样,如:C++,Java,在 Python 中字符串是不可变对象,创建之后便不可以修改了,因此,这个特性会影响到字符串在连接时的效率问题。 常用的字符串连接方法 使用操作符+连接字符串: In [1]: str1, str2, str3 = 'string1 ', 'string2 ', 'string3 ' In [2]: str1 + str2 + str3 Out[2]: 'string1 string2 string3' 使用join方法连接字符串: In [1]: str1, str2, str3 = 'string1 ', 'string2 ', 'string3 ' In......

Python虚拟环境Virtualenv和Virtualenvwrapper搭建

virtualenv 是一个创建隔绝的Python环境的 Python 包。当我们遇到几个项目依赖不同版本的包的时候,如:项目A需要 Django 1.10 版本,项目B需要 Django 1.11 版本,这时就可以使用 virtualenv 来解决这个问题。 Virtualenv 安装virtualenv pip install virtualenv 使用方法 mkdir your_project_folder cd your_project_folder virtualenv env # env是你的虚拟环境名称 此时会建立一个带有系统 Python 环境中所有第三方包的 Python 运行环境,若不想带有这些第三方包,命令中加上--no-site-packages这个参数,就可以得到一个不带有任何第......

树莓派搭建简单的 Nginx + uWSGI + Django

当我们编写完成 Django 项目后,可以使用python manager.py runserver来运行 Django 自带的服务器,但这只适合于测试环境使用,项目正式上线时,我们需要一个可以稳定并且持续的服务器,比如Apache, Nginx等。手里吃灰很久的树莓派终于可以派上用场了😂。 准备工作 烧写好系统的树莓派,我这里使用的是基于 Debian 的 Raspbian 系统,理论上后续搭建步骤在 Ubuntu/Debian 上都可以用。 注意 2016 年 11 月的新版本系统之后,树莓派默认禁用 SSH,你需要手动开启。......

Python中的__init__、__new__和__call__

__init__、__new__和__call__方法都是python中的魔术方法,通常我们认为__init__方法是类的构造方法,因为表面上看确实是这样:当需要实例化一个对象的时候,使用a = Class(args...)便可以返回一个类的实例,其中args参数与__init__中申明的参数一样,今天在刘志军老师的「Python之禅和朋友们」的知识星球中学习到不是这样的,这里以一个例子来说明一下: class......

Packet Tracer 模拟一次完整的HTTP请求

Q:当我们在浏览器中访问一个网址的时候 ,浏览器背后到底发生了什么呢? A:DNS域名解析 –> 发起TCP的3次握手 –> 建立TCP连接后发起http请求 –> 服务器响应http请求,浏览器得到html代码 –> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) –> 浏览器对页面进行渲染呈现给用户 –> 进行TCP的4次挥手 这里我在Packet Tracer中模拟一次简单的HTTP请求 环境准备 网络拓扑图......

Python中的可变对象与不可变对象

Python中一切皆为对象,每一个对象都有一个唯一的标识符( id( ) )、类型(type( ))以及值。而对象根据其值是否能够修改分为可变对象和不可变对象: 数字、字符串和元组属于不可变对象 字典、列表和字节数组属于可变对象 对于不可变对象,任何对其中的元素进行修改的操作都会抛出异常。 >>> test_str = 'hello world' >>> test_str[5] = 'q' ----------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-2-8e9684bd3ddc> in <module>() > 1 test_str[5] = 'q' TypeError: 'str' object does not support item assignment >>> test_tuple = (1, 2, 3) >>> test_tuple[1] = 4 ----------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-4-dba7800e3210> in <module>() > 1 test_tuple[1] = 4 TypeError: 'tuple' object does not support item......