python
丿寒风
网易游戏3年,游戏创业4年,3D设计软件架构师4年...
展开
-
Python内存管理和垃圾回收机制
零 概述首先说明一下,源码是基于CPythonPython垃圾回收机制是以引用计数为主,标记清除和分代回收为辅,再加缓存机制,以提升Python性能。一 引用计数1 环形双向链表 refchain在 Python 中创建的任何对象,都会加入到 refchain 中。对象节点的结构:下一个对象上一个对象引用计数对象类型CPython源码:// cpython/Include/object.h// 上一个对象 和 上一个对象#define _PyObject_HEAD_EXT原创 2020-09-28 14:25:55 · 344 阅读 · 0 评论 -
python小技巧
# -*- coding: utf8 -*-# 三元运算符x = 0y = 10cond = Truez = x if cond else yprint z# python 2.5加入# for-in-else# 即在for 循环中,如果没有从任何一个break中退出,则会执行和for对应的else# 只要从break中退出了,则else部分不执行。for i in r原创 2016-04-05 17:30:18 · 644 阅读 · 0 评论 -
Python学习笔记18:标准库之多进程(multiprocessing包)
我们可以使用subprocess包来创建子进程,但这个包有两个很大的局限性:1) 我们总是让subprocess运行外部的程序,而不是运行一个Python脚本内部编写的函数。2) 进程间只通过管道进行文本交流。以上限制了我们将subprocess包应用到更广泛的多进程任务。这样的比较实际是不公平的,因为subprocessing本身就是设计成为一个shell,而不是一个多进程管理包原创 2014-10-20 08:34:00 · 2318 阅读 · 0 评论 -
Python学习笔记17:标准库之数学相关(math包,random包)
前面几节看得真心累,现在先来点简单容易理解的内容。一 math包math包主要处理数学相关的运算。常数math.e # 自然常数emath.pi # 圆周率pi运算函数math.ceil(x) # 对x向上取整,比如x=1.2,返回2math.floor(x) # 对x向下取整,比如x=1.2,返回1math.pow(原创 2014-10-18 08:31:04 · 2355 阅读 · 0 评论 -
Python学习笔记19:服务器基础
一 TCP/IP和socket我们需要对网络传输,特别是TCP/IP协议和socket有一定的了解。socket是进程间通信的一种方法,它是基于网络传输协议的上层接口。socket有许多种类型,比如基于TCP协议或者UDP协议(两种网络传输协议)。其中又以TCP socket最为常用。TCP socket与双向管道(duplex PIPE)有些类似,一个进程向socket的一端写入原创 2014-10-20 09:23:10 · 1435 阅读 · 0 评论 -
Python学习笔记20:服务器进阶
上一篇我们在不依赖框架和CGI的情况下,仅使用socket接口,完成了一个可以处理HTTP请求的Python服务器。基于此,任何一台装有操作系统(推荐Linux)和Python的计算机都可以作为HTTP服务器使用,来架设你的网站。我们将在这里不断改写上一篇文章中的程序,并引入更高级的Python包,以写出更成熟的Python服务器。一 支持POST我们首先改写原文中的HTTP服务器原创 2014-10-21 08:36:40 · 1366 阅读 · 0 评论 -
Python学习笔记4:模块
现在看看Python中的模块吧!先贴上代码:main.py:import modulemodule.function()module.py:def function(): print "execute function"一 引入模块可以看到,我们使用关健字import引入模块,格式:import 模块名(不需要文件后缀名);原创 2014-10-08 10:38:47 · 1292 阅读 · 0 评论 -
Python学习笔记24:Django搭建简单的博客网站(二)
上一节说道如何使用Django创建并运行一个项目,这节说如何添加一个博客应用。一 项目跟应用的关系在添加应用之前,先来看看项目与应用之间有什么不同之处呢?项目是针对一个特定的 Web 网站相关的配置和其应用的组合。一个项目可以包含多个应用。应用是一个提供功能的 Web 应用 – 例如:一个博客系统、一个公共记录的数据库或者一个简单的投票系统。应用是“可插拔的”:你可原创 2014-10-25 08:51:01 · 3745 阅读 · 0 评论 -
python微框架Bottle(http)
环境:win7系统Python2.7一 背景和概述目前项目中需要添加一个激活码功能,打算单独弄一个http服务器来写。因为之前的游戏中已经有了一套完整的激活码生成工具和验证http服务器,所以直接拿过来使用了。都是用Python写的,http服务器用到了Python微框架Bottle。Bottle是一个非常精致的WSGI框架,它提供了 Python We原创 2015-07-06 20:51:25 · 3850 阅读 · 2 评论 -
python内存管理
一 与C语言的对比先来看看C语言的一段函数:#include int main() { int a = 1; int b = 1; int c = b; printf("&a = %p\n", &a); printf("&b = %p\n", &b); printf("&c = %p\n", &c); return 0;}原创 2015-12-18 15:58:02 · 933 阅读 · 0 评论 -
python常用随机函数及带权重随机实例
# -*- coding: utf-8 -*-import randoma = 1b = 10step = 3seq = [-1, -2, -3, -4, -5, -6, -7, -8, -9, 0]k = 2# 0 <= n < 1.0print 'random', random.random() # b <= n(float) <= aprint 'uniform',原创 2016-01-12 15:36:07 · 7026 阅读 · 0 评论 -
python中tuple/list/dict/set常用方法
一 元组# 1 定义tup1 = () # 空tup2 = (0, ) # 注意,必须有分号tup3 = (1, 2, 3, 4)# 2 操作# 2.1 合并tup4 = tup2 + tup3 # (0, 1, 2, 3, 4)# 2.2 长度print len(tup4) # 5# 2.3 切片print tup4[0:4:2] # (0, 2)# 3 遍历原创 2016-01-27 22:03:13 · 785 阅读 · 1 评论 -
python输出调试信息
# -*- coding: utf-8 -*-def get_cur_info1(): print __file__ # 当前文件名import sysdef get_cur_info2(): print sys._getframe().f_code.co_filename # 当前文件名 print sys._getframe().f_code.co_name #原创 2016-02-04 14:59:51 · 3066 阅读 · 0 评论 -
Python 字符编码详解
一 默认编码Python解释器默认编码:ascii>>> import sys>>> sys.getdefaultencoding()'ascii'Python源码文件默认编码:ascii#test.pyprint "你好"#报错因为源码中有非ascii字符, Python无法正确解码。 需要加上编码声明,告知Python解释器如何解码为str。#test.py# coding=utf-8原创 2016-10-12 18:49:27 · 874 阅读 · 0 评论 -
Python 装饰器
Python 装饰器python的装饰器实际上是一种装饰器模式,可以在不改变原有方法的情况下,给它添加功能。 一 属性装饰器class Monster(object): def __init__(self): self._hp = 0 @property def hp(self): return max(0, self._hp) @hp.原创 2017-01-17 15:37:19 · 524 阅读 · 0 评论 -
Python 与 C/C++ 交互小结
Python 与 C/C++ 交互可以分为以下3类:Python 拓展Python 嵌入Python 调用一 Python 拓展介绍:在 Python 程序中调用 C/C++ 编写的裤目的:提高关键代码的性能引入 C/C++ 成熟的功能库方式:Cython, SWIG, ctypes, CFFI形式:Python 为主程序,C/C++ 通过 .dll/.so 形式使...原创 2019-02-20 12:40:56 · 2123 阅读 · 0 评论 -
Python学习笔记15:标准库之获取进程信息(os包)
Python的os包中有查询和修改进程信息的函数。 进程信息os包中相关函数如下:uname() 返回操作系统相关信息,类似于Linux上的uname命令。umask() 设置该进程创建文件时的权限mask,类似于Linux上的umask命令。get*() 查询 (*由以下代替)uid, euid, resuid, gid, egid, resgid :权限相关,其原创 2014-10-17 08:59:40 · 2885 阅读 · 0 评论 -
Python学习笔记14:标准库之信号量(signal包)
signal包负责在Python程序内部处理信号,典型的操作包括预设信号处理函数,暂停并等待信号,以及定时发出SIGALRM等。要注意,signal包主要是针对UNIX平台(比如Linux, MAC OS),而Windows内核中由于对信号机制的支持不充分,所以在Windows上的Python不能发挥信号系统的功能。定义信号名signal包定义了各个信号名及其对应的整数,比如原创 2014-10-17 08:38:20 · 4207 阅读 · 1 评论 -
Python学习笔记21:数据库操作(sqlite3)
Python自带一个轻量级的关系型数据库SQLite。这一数据库使用SQL语言。SQLite作为后端数据库,可以搭配Python建网站,或者制作有数据存储需求的工具。SQLite还在其它领域有广泛的应用,比如HTML5和移动端。Python标准库中的sqlite3提供该数据库的接口。一 数据库设计我将创建一个简单的关系型数据库,为一个书店存储书的分类和价格。数据库中包含原创 2014-10-22 08:11:04 · 3173 阅读 · 0 评论 -
Python学习笔记23:Django搭建简单的博客网站(一)
上一节说了如何下载安装Django,这一节主要将如何使用Django创建运行一个网站。一 新建工程命令:django-admin startproject mysite# 有的需要输入:django-admin.py startproject mysite这是你会发现在当前目录下,生成了一个文件夹website,其结构为:mysite/ manage.原创 2014-10-24 08:36:10 · 24694 阅读 · 2 评论 -
Python学习笔记22:Django下载安装
Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。——百度百科官网下载:https原创 2014-10-23 08:27:06 · 2138 阅读 · 0 评论 -
Python学习笔记3:简单文件操作
# -*- coding: cp936 -*-# 1 打开文件# open(fileName, mode)# 参数:fileName文件名# mode打开方式# w 以写方式打开,# a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)# r+ 以读写模式打开# w+ 以读写模式打开# a+ 以读写模式打开#原创 2014-09-29 12:28:38 · 1389 阅读 · 0 评论 -
Python学习笔记5:函数参数详解
一、函数的定义格式:def 函数名(参数列表): 函数体def fun1(a, b, c): return a + b + c二、位置传递:位置对应print(fun1(3 ,2 ,1))输出:6三、关键字传递:位置参数要出现在关键字参数之前print(fun1(3 ,c = 1, b = 2))输出:6四、参数默认值:可以给原创 2014-10-09 09:27:36 · 1451 阅读 · 0 评论 -
Python学习笔记1:Python基础
一 变量和类型1 变量不需要声明2 type():可查询数据类型3 数据类型:None,int,float,bool,string4 sequence:tuple-定值表,元素不可变,list-表,元素可变s1 = (1, 2.2, "3", True) #s1 is a tuples2 = [1, 2.2, "3", True] #s2 is a原创 2014-09-26 11:19:10 · 1277 阅读 · 0 评论 -
Python学习笔记6:循环对象
以前总想着集中时间来学东西,经过这次国庆假期发现这TM根本就不现实啊,还是每天抽点时间,日积月累这样比较好。一、循环对象循环对象的并不是随着Python的诞生就存在的,但它的发展迅速,特别是Python 3x的时代,循环对象正在成为循环的标准形式。循环对象是这样一个对象,它包含有一个next()方法(__next__()方法,在python 3x中),这个方法的目的是进行到原创 2014-10-10 09:26:51 · 1258 阅读 · 0 评论 -
Python学习笔记7:函数对象及函数对象作参数
一、lambda函数例如:fun1 = lambda x,y: x + yprint fun1(3,4)输出:7lambda生成一个函数对象。该函数参数为x,y,返回值为x+y。函数对象赋给func。func的调用与正常函数无异。上面的代码等价于:def fun2(x, y): return x + y二、函数作为参数函数可以作为一个对象,进行参数原创 2014-10-11 09:17:38 · 2248 阅读 · 0 评论 -
Python学习笔记9:标准库之日期时间(time包,datetime包)
一 time包sleep([float time]) 延迟一段以浮点数表示的秒数time包基于C语言的库函数(library functions)。Python的解释器通常是用C编写的,Python的一些函数也会直接调用C语言的库函数。time.time()获得当前时间,返回float型, 单位:秒time.clock()在UNIX系统上,它返回的是“进程时间”原创 2014-10-14 09:07:27 · 4085 阅读 · 0 评论 -
Python学习笔记13:标准库之子进程(subprocess包)
ubprocess包主要功能是执行外部的命令和程序。从这个意义上来说,subprocess的功能与shell类似。subprocess以及常用的封装函数当我们运行python的时候,我们都是在创建并运行一个进程。在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序。subprocess包中定义有数个创建子进程的函数,这些函数分原创 2014-10-16 08:35:50 · 1532 阅读 · 0 评论 -
Python学习笔记12:标准库之对象序列化(pickle包,cPickle包)
计算机的内存中存储的是二进制的序列。我们可以直接将某个对象所对应位置的数据抓取下来,转换成文本流 (这个过程叫做serialize),然后将文本流存入到文件中。由于Python在创建对象时,要参考对象的类定义,所以当我们从文本中读取对象时,必须在手边要有该对象的类定义,才能懂得如何去重建这一对象。从文件读取时,对于Python的内建(built-in)对象 (比如说整数、词典、表等等)原创 2014-10-15 08:33:51 · 1605 阅读 · 0 评论 -
Python学习笔记10:标准库之路径和文件(os.path包,glob包)
一 os.path包且看代码:import os.pathpath="/home/User/Document/test.txt"print(os.path.basename(path)) # 查询路径中包含的文件名print(os.path.dirname(path)) # 查询路径中包含的目录 info = os.path.split(path)原创 2014-10-14 09:23:47 · 1797 阅读 · 0 评论 -
Python学习笔记8:标准库之正则表达式
Python拥有强大的标准库。从现在起,开始学习标准库中提供的一些常用功能。首先看正则表达式(regular expression),它的主要功能是从字符串(string)中通过特定的模式(pattern),搜索想要找到的内容。例如:要从一个字符串中找出所有的数字,我们可以这样做:import restr = "int2str"m = re.search("[0-9]",str)原创 2014-10-13 09:34:26 · 1165 阅读 · 0 评论 -
Python学习笔记11:标准库之文件管理(os包,shutil包)
1 os包os包包括各种各样的函数,以实现操作系统的许多功能。这个包非常庞杂。os包的一些命令就是用于文件管理。我们这里列出最常用的:mkdir(path)创建新目录,path为一个字符串,表示新目录的路径。相当于$mkdir命令比如说我们要新建目录new:import osos.mkdir('/home/Document/new')rmdir(path)原创 2014-10-15 08:20:29 · 2088 阅读 · 0 评论 -
Python学习笔记16:标准库之多线程(threading包)
Python主要通过标准库中的threading包来实现多线程。当今网络时代,每个服务器都会接收到大量的请求。服务器可以利用多线程的方式来处理这些请求,以提高对网络端口的读写效率。Python是一种网络服务器的后台工作语言 (比如豆瓣网),所以多线程也就很自然被Python语言支持。多线程售票以及同步我们使用Python来实现Linux多线程与同步文中的售票程序。我们使用m原创 2014-10-17 09:24:18 · 1707 阅读 · 0 评论 -
Python学习笔记2:类的定义和继承
# 类的定义格式:class 类名(父类): __init(self,参数) 成员方法 成员变量# 所有类的基础object# 私有方法和变量使用__开头例如:定义一个鸟类class Bird(object): __have_feather = True # 私有属性:是否有羽毛 way_of_reprod原创 2014-09-26 20:19:46 · 1838 阅读 · 0 评论