学习日志---python继续

内存管理:

使用垃圾回收机制,垃圾回收的策略是引用技术(reference counting);

对象的三个要素:identity内存地址(不可变);type类型(不可变);value值。

id()这个函数是返回这个对象的地址,用于判断是否是同一个函数。如id("aaa")

引用计数:

一块内存地址被指向的次数,如果为0的话就说明回收这块空间。

整形缓冲池:

整形值预先进行了分配,不会被回收。缓冲池的换位可以通过修改源码来改变,根据具体项目来设定,提高效率。

def是同一个,a=def  class是不同的对象,a=class(),这个是分配新的内存;

is语句:

判断是否是同一个对象,判断是否是指向同一个内存!!

序列中的元素可以用下标去访问,从0开始,也可以从负数做下标,-1序列尾部的元素,如可以l[-1]取得l中的最后一个元素。

连接操作:

序列可以用+号操作,使两个序列合在一起,这种是创建一个新的序列。

extend方法只支持list,这个是在原序列基础上加长。如a.extend(b),a加长,变为a+b;

append方法只支持list,添加单个元素;

del a[2],只支持list,删除a中2位置的内容;

[序列]*数字,可以实现复制,返回一个新的序列;

切片slice:

[起点:终点:步进],包括起点,不包括终点;如a[::2],表示a序列中,取步进为2的值。

特殊情况:

当步进为负数时,走的方向相反,从尾部为起点。负号表示方向。可以输出反向的字符串作用。

a="string"
print a
print a[::-1]

上面输出正向,下面输出反向。

类型转换:

实际上是创建了一个新的对象,通过id()这个函数可以去分析得到。

list和turple都是函数,工厂函数,可以对序列进行转换。

a=[1,2,3]
print tuple(a)

序列的内建函数:不是方法,是函数,这些都是函数,不是对自身序列的改变,而是重新建一个;

enumerate(iter):该方法生成键值组合的可迭代对象,key是指名位置;

len():返回长度;

reversed(seq):返回一个方向序列,用在循环中;

sorted(序列,func=,key=,reverse=):返回排序后的列表;

http://www.cnblogs.com/65702708/archive/2010/09/14/1826362.html

http://www.cnblogs.com/woshitianma/p/3222989.html

lambda是把序列中的每一项当作一个整体,用下标的方式去指明,如果是一个类,则可以用类中的元素去比较,key是指传一个参数进去的函数,输出作为比较的依据;func是传递两个参数,两两比较返回序列。

sum(集合,起始值)求和;

for head,value in enumerate(a):
    print head,"  ",value

print len(a)

for i in reversed(a):
    print i

print sorted(a,reverse=True)

print sum(a)

字符串:

字符串是不可变的序列,任何一点改变都是创建新的字符串,有两种字符串,有普通字符串和unicode字符串,推荐使用unicode字符串!

因为每次+都会创建新的字符串,为了避免很多的临时字符串,使用join方法

sl=["hello","we","love","python"]
sl = " ".join(sl)
print sl

以空格作为中间符号把单个字符串连起来。

Unicode编码

utf-8是可变的,一字节到四字节,一般一个汉字占三个字节,也可以四个

utf-16和utf-32,分别表示最少占用16位和32位。

元组真的不能被修改吗?

序列实际上是容器,存的都是元素的地址

a=(1,2,3,4,[1,2,3,4])
a[4].append(5)
print a

a可以改内部的东西,因为它认为其地址没变,即没变

拷贝

浅拷贝和深拷贝

浅拷贝:切片,序列方法。。

       内层的序列不会重新生成,而是和以前的共用一个。

深拷贝:copy模块的deepcopy函数

       内外的序列都是重新生成的

c=copy.deepcopy(a)    

时间: 2024-10-13 20:59:02

学习日志---python继续的相关文章

学习日志---python(函数式编程)

函数式编程 后面的闭包和装饰器很重要,参数可以是函数,把函数传进去参与运算. 过程是一个没有返回值的函数,函数本身也是一个对象,因此可以赋值给引用: 一个模块中函数不可重名,因此不支持重载,因为python是以函数名来识别调用的哪一个: 模块中函数的定义是自上而下的: 可以多个返回值,看作是一个元组:也可以分开多个变量接受返回值: def p():     return 1,2,3 a=p() print a a,b,c=p() print a,b,c 函数的属性 文档属性:__doc__ 可以

学习日志---python(新式类,面向对象)

类型与类: 使用新式类,class a(object) 这样a就可以是type类型了,新式类 python使用__new__来构造对象,使用__init__来初始化对象,这两个是分开的,在new出的同时可以调用init方法来初始化,可以带参数:类中的每个函数(方法)都要加上self,表示为实例上的方法.self代表这个类的实例. 实例变量:是针对每个实例的变量,每个实例的变量是不同的: 类变量:是针对类的,类中的这个变量都一样: class A(object):     #这个是类变量     

学习日志---python(列表解析、生成器、字典和集合)

产生列表可以用range(); 列表解析 对一个序列进行解析生成新的列表:列表解析比for的性能好很多: a=[x for x in range(0,10) if x > 5] print a a=[x+1 for x in range(0,10) if x > 5] print a 利用列表中的表达式可以得出所需的列表,无需在用for循环得到: 双重嵌套:用更简便的语句得出里列表: a=[(x,y) for x in range(3) for y in range(3)] print a 解

python基础学习日志day5-各模块文章导航

python基础学习日志day5---模块使用 http://www.cnblogs.com/lixiang1013/p/6832475.html python基础学习日志day5---time和datetime模块 http://www.cnblogs.com/lixiang1013/p/6848245.html python基础学习日志day5---random模块http://www.cnblogs.com/lixiang1013/p/6849162.html python基础学习日志da

Python学习日志9月13日

p { margin-bottom: 0.25cm; line-height: 120% } 昨天的学习日志没有写,乱忙了一整天,政治电脑. 好奇心重,想要给电脑装上传说中LInux操作系统,各种小问题折腾到半夜,今天又折腾到晚上才真正的装上系统. 可是装上系统后又发现各种的不好用.虽然界面比win7要好看很多,很舒服,下个软件却要设置java的环境变量,而我连java是什么玩意都不知道.思维导图不能用了,又得想别的办法,对我来说这是非常重要的工具啊.简直没有它无法从事脑力活动. 因为前天晚上也

Python 学习日志9月21日

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px "Helvetica Neue"; color: #000000 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px "PingFang SC"; color: #000000 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px "Hel

Cocos2d-x 3.1.1 学习日志11--一Windows下Android环境搭建(一定对你有用的!!)

安装步骤::(多么痛的领悟!!) 1. 配置JDK JDK下载地址: 设置环境变量: JAVA_HOME=C:\Program Files (x86)\Java\jdk1.7.0_21 CLASSPATH=.;%JAVA_HOME%\lib; Path增加%JAVA_HOME%\bin; 设置完后打开cmd,输入java -version 如果出现下面提示,表明环境变量设置成功: C:\Users\arlin>java -version java version "1.7.0_21&quo

mysql学习日志

Mysql学习日志; 安装:Linux :yum install mysql* -y 验证Mysql是否正常安装:mysqladmin --version 进入 Mysql,要先启动#service mysqld start#mysql 更换Mysql初始密码: 安装完成mysql为空密码,修改密码方式:mysqladmin -u root password newpassword 用户已经有旧密码的更改方式:MYSQLADMIN -u root -p'oldpassword' PASSWORD

基于Flask框架搭建视频网站的学习日志(二)

基于Flask框架搭建视频网站的学习日志(二)2020/02/02 一.初始化 所有的Flask程序都必须创建一个程序实例,程序实例是Flask类的对象 from flask import Flask app = Flask(__name__) Flask 类的构造函数Flask()只有一个必须指定的参数,即程序主模块或包的名字.在大多数程序中,python的__name__变量就是所需的值.(Flask这个参数决定程序的根目录,以便稍后能够找到相对与程序根目录的资源文件位置)--<Flask