首页 > 代码库 > python-我所忽略的技术细节

python-我所忽略的技术细节

acc = raw_input("Enter the numebr:")
type(acc)  raw_input 是字符串标准输入,如果要与数字做算术运算是要将其类型进行转换。

元组和列表可以看成是普通的‘数组’,元组不可更改,列表可以。

为了输出清晰美观,带逗号的print语句输出的元素之间会自动添加一个空格。

print "hello,world"
hello world

对于条件判断,‘还有什么是真’

acc = [x**2 for x in range(8) if not x%2] 等同于 aca = [x**2 for x in range(8) if not x%2==1]

还等同于 cac = [x**2 for x in range(8) if x%2 == 0]

这个就类似与C语言中条件判断,例如:

while (hello != 0)  等同于 while(hello)  后者默认的就等于1.要谨记,关系表达式为真,那么也就是说它的值等于1.不然就是0.

filename = raw_input("Enter the file:")

fp = open("filename","r")

for eachline in fp:

    print eachline,   #这里加逗号是为了抑制print语句输出的自动换行。因为这里不需要自动换行了,不然会多产生一个空行。

fp.close()

python允许同一行书写多个语句,用;隔开,但python 并不提倡这么做。

每一个python 脚本文件都可以看成是个模块。

模块以磁盘文件的形式存在。

当一个模块变得过大,并且驱动了太多功能的话,就应该考虑拆一些代码出来另外建一个模块。
下划线对解释器有特殊含义,而且是许多内建标示符所使用的符号.

文档,obj.__doc__进行访问,获得动态文档字符串,obj可以是函数名,模块,类

def foo(x):
    "hello world"
    return x + 1
foo.__doc__
hello world

如果模块是被导入,那么__name__ 值就是 模块名

如果模块是直接执行,那么 __name__ 的值就是 __main__

所有的python对象都拥有三个属性,类型,值,身份。

每一个对象都有唯一的一个身份来标识自己,可以用内建函数id()来查看,可以理解成它的内存地址。

空对象或值为零的任何数字或NULL对象值,他们的布尔值都是False.

python 中不仅有值的比较,还有对象的比较。例如:

a = 4.3
b = 3 + 1.3
a is not b
True  #虽然他们的值是相同的,但引用的是两个不同的对象。或者说:
id(a) == id(b)
False  #实际的内存地址是不同的。但如果是这样:
m = 5
n = 5
m is n
True
y = m
id(m) == id(y)
True

每个python 对象天生都有一个计数器,用来计算这个对象被引用的次数,就像是在一个装着内容的盒子上贴有的标签,当引用减为零时,这个对象自然就消失。

以上是比较身份的运算符:is , is not

def a(num):
    if isinstance(num,(flaot,int,long,complex)):
        print "%s is the type:" %(num),type(num).__name__
    else:
        print "not at all "

type(0),type(5),type(-100)都属于同一个对象。

如果对象是不同的,那我们就知道原来的变量一定是不同的类型,因为每一个类型只有一个类型对象。所以可以直接来进行对象身份的比较。

序列类型是指从0开始的索引。字符串,元组,列表都属于序列类型。

映射类型是通过唯一的key来访问,它无序存放。

其实在python 中,一切都是指针。


本文出自 “天才的实力” 博客,请务必保留此出处http://8299474.blog.51cto.com/8289474/1440681

python-我所忽略的技术细节