首页 > 代码库 > 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-我所忽略的技术细节