疑问总结(九)(持续更新中)

1、经典类和新类的显示的区别?

定义类时()中加了object 是定义新类,不加定义经典类。

class DD():
    pass
print 'classic class',type(DD)
class AA(object):
    pass
print 'new class',type(AA)

>>> 
classic class <type 'classobj'>
new class <type 'type'>
>>> 

2、linux系统中,ls -lh 显示的文件名后面的一个点和两个点是什么意思?

     一个点表示本目录,两个点是上一级目录。可以理解为定义了指针。

3、dd命令后,为什么cpu消耗很大,mem却很少?
  dd命令效果是反复的复制文件,cpu不能直接控制硬盘,必须通过mem,所以mem有消耗,但是可能是算法决定了cpu在反复的操作句柄,所以cpu很高。

4、怎么终止函数

  continue,break,return。return可以终止整个函数。这三个语句的用法在前面以详细说明,这里不再冗述。

5、怎么用dict构造一个元素的字典?
  注意第一个元组后要加逗号。

>>> a = dict((('k1','v1'),))
>>> a
{'k1': 'v1'}
>>> 

6、什么相当于假?

  0,bool值False,字符串,列表,字典为空,None都符合假的定义。False,字符串,列表,字典为空,None之间不相等。

7、浮点型赋值,为什么对象的内存地址是一样的?
   

a = 100.0
b = 100.0
print (a is b)
print id(a),id(b)

>>> 
True
25355320 25355320
>>> 

  实际对浮点型数据存储的内存地址是不一样的,但是python给其中一小部分相同的数字做了统一内存的机制。

  再具体就是创建的时候实际分配的内存地址是不同的,但因为是一样的数字,所以python做了统一的操作。把之前内存地址里的内容回收了。显示出来的id是真实的内存地址。

8、is和==区别

python中对象三要素,类型,内存地址和数值。用以下函数可以验证,type,id。

is 是判断两个函数内存地址是否相等。==是判断两个对象的value是否相等。

a = 100
b = 100.0
print (a is b)
print id(a),id(b)
print(a == b)

>>> 
False
19522788 25683000
True
>>> 

9、类方法的调用机制

未解决#######################################

为什么不提示错误,这是什么机制。

class DD(object):
    'test'
    def foo(self):
        print 'guess'
        pass
dd = DD()
DD.foo(dd)

>>> 
guess
>>> 

10、在python提示中的buffer指什么?

Traceback (most recent call last):
  File "C:/Python27/readfilecon.py", line 14, in <module>
    res =re.findall(ob,colList)
  File "C:\Python27\lib\re.py", line 177, in findall
    return _compile(pattern, flags).findall(string)
TypeError: expected string or buffer
View Code
 读文件的时候如果是以二进制的方式读,python会读出一个buffer类型的东西,即一个二进制的字节流。
11、列表一个元素的时候为什么后面加一个逗号?

a = [5,] 这是为了区分a[5]索引形式。
12、in的用法
判断 a = set([2,3])与a = set([2,3,5])的关系用到in 但是结果为False,这是是不是in 只判断 容器中的元素,即它判断的是啊、b中是不是有一个集合 set([2,3])。
13、%-数字s的用法
>>> print ('r%-5s%-10s'%('aabc','qwe'))
raabc qwe       
>>> 
View Code

实际是生效的,给这个字符串5个字符的位置 字符串左对齐。

14、为什么id(a.item)地址不相同

首次结果和后续的结果不相同,从第二次开始所有的结果相同。

未有明确答案?????????????

15、4G内存为什么能存一个十多位的数字?

4G内存按照2*32一共才能表示40亿左右的数字,为什么能表示比如1000000000000这么大的数值呢?因为4G说的是内存的容量,即内存的地址,所以也就是有4g个8位的空间可以存储数据,而一个字节即8bit位能表示多少数字呢 2*8,那么int占4个字节也就是2*32,那么对于一个L来说多占用一些内粗空间就能表示了那个大数字。4g内存一般地址总线也是4G即能够在4G的范围寻址。

 

 

 

 

 

 
 
 

posted on 2016-05-15 13:17  lexn  阅读(121)  评论(0)    收藏  举报

导航