区块链入门学习及Python代码实现

密码朋克Cyberpunk:数字资产发行
比特币-数字货币(共识机制),去中心化的记账系统

  • 财产只受自己控制
  • 无通胀
  • 没有假钞
  • 流通性好

工作量证明(Proof of Work):获得唯一记账权,Hash前置18个0,理论上需进行1618次计算,获取记账权将获得奖励

Read More

如何安装Python3.7

Python 3.7运行命令行

我们都知道Python的主要版本是2.7和3.6,Python 3已逐步取代2成为主流,那么最新的Python 3.7版本也已处于Beta版较后阶段的测试,根据官网显示发布时间将在2018-06-15。对于紧跟趋势爱尝鲜的小伙伴们自然希望早日上手,那么如何进行安装呢?

进入以下页面,可以找到最新Beta版的下载地址:

https://www.python.org/download/pre-releases/

对于Windows和Mac,安装方式较傻瓜,不再进行赘述,以下以Ubuntu为例来进行Python 3.7的安装,测试环境我们使用Vagrant配合Docker来搭建(vagrant init ubuntu/xenial64)。

Read More

Python使用小知识小技巧总结

Python使用小知识小技巧总结

闲言碎语

二进制0b, 八进制0o, 十六进制0x(进制转换二进制bin, 八进制oct,十六进制hex)
id(var_name)查看内存地址(十六进制地址hex(id(var_name)))
ord(‘a’)查看ascii编码对应的数字,如a是97
isinstance(a, str)或isinstance(a, (str, int))判断变量a是否为某一类型或某几种类型中的一种
sys.setrecursionlimit(100000) 设置递归次数上限(实际根据环境上限略有不同)
@classmethod 类方法
@staticmethod 静态方法
数据筛选

以筛选出>=0的数字为例
列表

#造数据
from random import randint
#Python 3使用range, 2使用xrange,-10到10之间的10个整数
data = [randint(-10, 10) for _ in xrange(10)]
#常规方法
res = []
for x in data:
	if x >= 0:
		res.append(x)
print res
#lambda的方法
filter(lambda x: x>=0, data)
#列表解析方法,首选,效率较上面两种方法更高
[x for x in data if x >= 0]

Read More

Python 2和Python 3的主要区别

Python 2和Python 3下的主要区别

  1. Python 2和Python最大的区别就是字符编码上的区别,通常在Python 2的文件头都需要声明为UTF-8编码:

因此对于Python 2的中文符需要编码(先转为Unicode再进行encode)

而Python中则直接采用了Unicode编码,无需进行转码

SyntaxError: Missing parentheses in call to ‘print’
在Python 3中print后需添加括号进行打印输出

NameError: name ‘xrange’ is not defined
Python 2下的xrange在Python 3中使用range

AttributeError: ‘dict’ object has no attribute ‘itermvalues’
Python 3对于原Python 2下的iteritems, iterkeys, itervalues一律去除iter

Django@Python 3常见问题

Django@Python 3常见问题
环境搭建及常见配置
详情可参见Django环境搭建及开发

# 如果同时安装了Python 2和Pyhton 3要指定版本
mkvirtualenv -p python3 env
或
mkvirtualenv --python=python3路径 env

pip install django mysqlclient
pip install django-crispy-forms django-formtools httplib2

虽然很多领域如机器学习的开发者当前更青睐于Python 2,但Python 3已经被越来越多的开发者们所使用,本文旨在整理Python 3环境下安装最新Django版本所出现的问题,其中有很多内容和Python 2下相似或相同。

1.用户表重写

在继承AbstractUser表重写该类时会提示Reverse accessor for ‘User.*’ clashes with reverse accessor for ‘*.*’

auth.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes with reverse accessor for 'UserProfile.groups'.
	HINT: Add or change a related_name argument to the definition for 'User.groups' or 'UserProfile.groups'.
auth.User.user_permissions: (fields.E304) Reverse accessor for 'User.user_permissions' clashes with reverse accessor for 'UserProfile.user_permissions'.
	HINT: Add or change a related_name argument to the definition for 'User.user_permissions' or 'UserProfile.user_permissions'.

解决这一问题只需要按照你定义的app名称和类名在settings.py中添加如下内容:

Read More

【转载】Python正则表达式指南

1. 正则表达式基础

1.1. 简单介绍

正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了。

下图展示了使用正则表达式进行匹配的流程:
re_simple

Read More