永恒只需一刹那.

「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......

Python中的浅拷贝与深拷贝

在面试过程中,经常会被问浅拷贝与深拷贝的区别。所以,在这里记录一下自己的理解,以便以后好复习。 浅拷贝(shallow copy) 所谓“浅拷贝”,是指在复制一个对象时,构建一个新的对象,并将原对象中发现的引用插入到该对象中. 浅拷贝的实现方式常见的有:工厂函数、切片操作、copy模块中的copy函数等 实现如下: >>> a = [1, 2, [3, 4]] >>> b = a[:] >>> id(a) 4505384008 >>> id(b) 4504586056 >>> [id(x) for x in a] [4470102640, 4470102672, 4505384072] >>> [id(x) for x in b] [4470102640, 4470102672, 4505384072] >>> a[2] += [5] >>> a [1, 2, [3, 4, 5]] >>>......