python基础一
2015-11-24 17:43
567 查看
关于内存分配问题
新定义字符串变量默认新开辟一块新的内存空间
其它类似有索引如列表,元组或是字典赋值时其实只是把变量名指向同一地址空间而已,如下所示
列表,元组及字典的复制问题(浅复制与深复制 copy模块的使用)
1、列表及元组可使用切片实现浅复制,也可使用 copy模块使用浅复制(包括字典)
2、使用copy.deepcopy() 实例深复制
常用内置函数
python内置函数是非常多的,记住常用的就行了,但会知道怎么查看有哪些内置函数,函数的帮助
正常情况下分3步走
type(变量) ---> 得到变量的所属类
dir(类名) --->查看类下都有哪些方法,其中类似 __abs__ 以双下划线开头的一般都有替代的方法 如: __abs__ <=> abs()
help(类名或函数名) --->查看类下函数用法或是直接查看函数用法
整形
View Code
新定义字符串变量默认新开辟一块新的内存空间
其它类似有索引如列表,元组或是字典赋值时其实只是把变量名指向同一地址空间而已,如下所示
##字符串新定义则开辟新的一块内存空间 >>> str1 = 'hoho' >>> str2 = str1 >>> id(str1),id(str2) #查看内存对象地址,观察内存地址,即str2新开辟了内存空间 (140297199501752, 140297199501752) #这里看到是一样的是由于python的一个内部机制导致的,如果字符串足够大的话就会是不一样的,不用纠结 >>> str2 = 'heihei' >>> str1 'hoho' >>> str2 'heihei' >>> id(str1),id(str2) #看,内存地址是不是变了 (140297199501752, 140297214622552) ##非字符器,如列表,元组,字典赋值定义后其实只是把新的变量名(可以理解为标签)指向同一内存地址,以字典为例,如下所示 >>> dic1 = {'name':'hoho'} >>> dic2 = dic1 >>> id(dic1),id(dic2) (140297199190088, 140297199190088) >>> dic1 = {'name':'hoho'} >>> dic2 = dic1 >>> id(dic1),id(dic2) #查看内存对象地址,发现是一样的,故修改dic2事实上dic1也跟着修改了 (140297199191752, 140297199191752) >>> dic2['name'] = 'heihei' >>> dic2 {'name': 'heihei'} >>> dic1 {'name': 'heihei'}
列表,元组及字典的复制问题(浅复制与深复制 copy模块的使用)
1、列表及元组可使用切片实现浅复制,也可使用 copy模块使用浅复制(包括字典)
2、使用copy.deepcopy() 实例深复制
>>> import copy >>> list1 = [1,2] >>> list2 = list1 >>> list2[0] = 2 #list2改了,list1跟着变了 >>> list1 [2, 2] >>> list3 = list1[:] #浅复杂,利用数组切片做浅复制 >>> list3 = copy.copy(list1) >>> id(list1),id(list2),id(list3) #这里就可看到地址空间是不一样的 (140297199250696, 140297199250696, 140297199247560) >>> >>> list4 = [1,[2]] ##复杂结构必须用深复制 >>> list5 = list4[:] >>> list5 [1, [2]] >>> list5[1][0] = 6 >>> list4 [1, [6]] #从这里可以看到内层的列表事实是没复制的,list4也跟着变了 >>> list6 = copy.deepcopy(list4) #这里使用深复制 >>> list6[1][0] = 8 >>> list6 [1, [8]] >>> list4 [1, [6]] #这里就可以看出已经复制的了
常用内置函数
python内置函数是非常多的,记住常用的就行了,但会知道怎么查看有哪些内置函数,函数的帮助
正常情况下分3步走
type(变量) ---> 得到变量的所属类
dir(类名) --->查看类下都有哪些方法,其中类似 __abs__ 以双下划线开头的一般都有替代的方法 如: __abs__ <=> abs()
help(类名或函数名) --->查看类下函数用法或是直接查看函数用法
整形
>>> dic1 = {'key1' : 'a','key2' : 'b'} >>> dic1.get('key1') #取字典值,没取到默认返回None,也可指定 'a' >>> dic1.get('key3') >>> dic1.items() dict_items([('key2', 'b'), ('key1', 'a')]) #返回元组列表 >>> list(dic1.items()) [('key2', 'b'), ('key1', 'a')] >>> dic1.keys() #返回keys列表 dict_keys(['key2', 'key1']) >>> dic1.values() #返回值列表 dict_values(['b', 'a']) >>> dic2 = dic1.copy() #浅复制 >>> dic2 {'key2': 'b', 'key1': 'a'} >>> dic1['key3'] = 'c' #赋值(修改) >>> dic1 {'key2': 'b', 'key1': 'a', 'key3': 'c'} >>> dic1.pop('key1') #删除指定的key 'a' >>> dic1 {'key2': 'b', 'key3': 'c'} >>> dic1.get('key1','a') #取值,没有返回'a' 'a' >>> dic1 {'key2': 'b', 'key3': 'c'} >>> dic1.setdefault('key1','a') #设置默认(貌似没什么用) 'a' >>> dic1 {'key2': 'b', 'key1': 'a', 'key3': 'c'} >>> dic3 = {'name':'update'} >>> dic1.update(dic3) #更新 >>> dic1 {'key2': 'b', 'name': 'update', 'key1': 'a', 'key3': 'c'} >>> del dic3 #删除 >>> dic1 {'key2': 'b', 'name': 'update', 'key1': 'a', 'key3': 'c'} >>> len(dic1) #长度 4
View Code
相关文章推荐
- 运行Python2.x程序报编码错误的解决办法-UnicodeDecodeError: 'ascii' codec can't decode byte 0xb7 in position 7: ordina not in range(128)[0m
- python read xml file--simple example
- python 下载文件的三种方法
- python文件头--文件编码指定
- Windows下 python快速安装numpy、matplotlib、scikit-learn等库方法总结
- Python HTML编码解码
- Python 练习册,每天一个小程序 -- 0001题
- 【python】class之类的内建函数
- [LeetCode]题解(python):061-Rotate List
- Protocol Buffer Basics: Python
- 17个新手常见Python运行时错误
- python selenium中如何测试360等基于chrome内核的浏览器
- AIX平台安装python
- Python MAC地址 获取,过滤,转换 Python MYSQL 数据获取,比较
- Python-ConfigParser常用操作示例
- Python Paramiko模块安装和使用
- python egg文件解压
- Python字符串
- Python 标准库 urllib2 的使用细节
- Python数字