交互解释器是python开发过程中的利器之一,它可以方便的测试小段的代码,而且可以自动检查代码的正确性(例如CPython).
python中的print是很好用的命令,尤其在调试时,虽然也有不使用它就能打印变量值的方法但是通常会产生不同的效果:
>>>'hello world' 'hello world' >>>print ''hello world'' hello world
当直接把一个对象丢给解释起的时候他会用引号强调这是个字符串,但是使用print语句时,引号就会消失,因为解释器理解到要显示的是字符串的内容,但是对数字来说显示的就是一样的了,对于复杂对象来说这个差异会非常明显,因为python会让你决定在没有使用print时对象应该作出怎样的行为下面的字典中有例子。
python的对象类型中的bool型和其他语言一样,而且所有的变量都可以表示为布尔值,例如大非零的为true,等于就是false,类似的空为false非空为true等等
至于python的数据类型尤其是浮点类型另有博客详细叙述。
python中的序列包括了在js中常用的两个类型string和list(列表或者说数组)它们都是序列的一种,序列表示可以迭代的数据类型,(迭代:每次获取一个元素,可以用next不断的要求下一个对象,而它则不断的读出内部的元素直至末尾)。虽然大多是用的时for但是python确实支持这种迭代,以及随机访问,也可以使用索引。
python中的冒号运用在索引中表现为
>>>a = 'zhonghuarenminggongheguo' >>>a[2:6] 'ongh' >>>a[ :6 ] 'zhongh' >>>a[ 21: ] 'eguo' >>>a[ 1:-2 ] 'hon' >>>a[ : ] 'zhonghuarenminggongheguo' >>>'a'*3 'aaa' >>>'an' in 'and' true >>>'an' not in 'people' true
这里的冒号代表了返回整个序列的某一切片的一个拷贝其他可以做用于序列至上的操作包括了连结(+),复制(*),成员(in ,not in)。但是相比于连结(+)符,序列在进行拼接时更有效率的使用的是join
join['fat','th']
和extend
list1.extend(list2)
python的列表包括了两个可以返回排好顺序的拷贝列表的方法sorted和reversed。建立列表时甚至使用以前在js中完全没有想到过的使用推导式
>>>string = [ x+1 for x in range(10) ] >>>string [1,2,3,4,5,6,7,8,9,10] #range(3) --> [0,1,2] 从0到3不包括3 #range(1,4) --> [1,2,3] 从1到4不包括4 #range(1,4,2) --> [1,3] 从1到4不包括4,间隔2 >>>string = [x for x in range(10) if x%2 == 0] >>>string [0,2,4,6,8]
python中的字符串不可修改,不可修改,不可修改,所有的字符串方法都是返回了一个修改过的拷贝
元组类似列表(数据库中表示表中完整的一排)python中使用小括号表示元组值一样不可改变而且没有方法,相比于一个只读的列表元组主要作为参数传递给函数调用,同时元组的单个元素有逗号决定,因此(‘zhongguo’)只是一个字符串(‘zhongguo’,)就是一个元组。
注:django中的admin选项,url规则,多数在setting中的设置等都用元组指定,因此如果设置admin不是元组而是字符串(可以想见的是少了一个逗号)就会返回一个有用的类型错误的错误。
python中的字典可变、无序、不定长的键值映射(也称散列表或关联数组)和js中的对象很像,而且python中的其他数据类型都可以看作字典的某一个键的值例如上面的string = [1,2,3,4,5,6,7,8,9,10]可以看做对象中的一个属性键为string 属性值为[1,2,3,4,5,6,7,8,9,10]。
book = { 'name' : 'baike' 'price' : 1.8 } >>>for e in book ... print e, ':' , book[e] name : baike price : 1.8
python语法一个非常重要的地方就是没有区分作用域和代码块的大括号( {} ),取而代之的是严格按照对齐来划分作用域代码块,给定的一段python代码必须严格的具有相同的缩进对齐,而对于其他方面的符号也少的可怜,表示条件的小括号(js用在if和for或者函数参数中),结尾也不需要分号最多是用的也就是冒号和下划线了。
至于注释和运算符则和其他语言没有太大区别,除了不包括++和--。
之后便是变量了,js中需要var一下才能对变量赋值,不先var一下就无法调用会显示变量不存在的错误,而python中不先声明却可以直接对变量赋值,可以说是给某一变量直接取名,换一个名字调用它了,因此不能百分百确定变量在任何给定时刻指向的是什么类型的对象,除非向解释器描述更多更详细的信息,反正由于鸭式(走起来像只鸭子,叫起来像只鸭子,那就是一只鸭子)的缘故,只要python的变量能表现的相个类型的话那它就可以被认作是那个类型的变量。