Python 既是动态类型语言 (因为它不使用显示数据类型声明),又是强类型语言 (因为只要一个变量获得了一个数据类型,它实际上就一直是这个类型了)
静态类型语言
一种在编译期间就确定数据类型的语言。大多数静态类型语言是通过要求在使用任一变量之前声明其数据类型来保证这一点的。Java 和 C 是静态类型语言。
动态类型语言
一种在运行期间才去确定数据类型的语言,与静态类型相反。VBScript 和 Python 是动态类型的,因为它们确定一个变量的类型是在您第一次给它赋值的时候。
强类型语言
一种总是强制类型定义的语言。Java 和 Python 是强制类型定义的。您有一个整数,如果不明确地进行转换 ,不能将把它当成一个字符串。
弱类型语言
一种类型可以被忽略的语言,与强类型相反。VBScript 是弱类型的。在 VBScript 中,您可以将字符串 '12' 和整数 3 进行连接得到字符串'123',然后可以把它看成整数 123 ,所有这些都不需要任何的显示转换。
当导入一个模块时,Python 在几个地方进行搜索。
明确地,它会对定义在 sys.path 中的目录逐个进行搜索。它只是一个list (列表),您可以容易地查看它或通过标准的list方法来修改它。
>>> import sys
>>> sys.path
['', '/usr/local/lib/python2.2', '/usr/local/lib/python2.2/plat-linux2','/usr/local/lib/python2.2/lib-dynload', '/usr/local/lib/python2.2/site-packages','/usr/local/lib/python2.2/site-packages/PIL', '/usr/local/lib/python2.2/site-packages/piddle']
>>> sys
<module 'sys' (built-in)>>>> sys.path.append('/my/new/path')
在运行时,通过向 sys.path 追加目录名,就可以在 Python 的搜索路径中增加新的目录,然后当您导入模块时,Python 也会在那个目录中进行搜索。这个作用在 Python 运行时一直生效。
Python 将搜索这些目录 (按顺序) 来查找一个与您正试着导入的模块名相匹配的 .py 文件。
但不是所有的模块都保存为 .py 文件。有一些模块 (像 sys),是“内置模块”,它们实际上是置于Python 内部的。内置模块的行为如同一般的模块,但是它们的 Python 源代码是不可用的,因为它们不是用 Python 写的!(sys 模块是用 C 写的。)
在 Python 中一切都是对象,字符串是对象。列表是对象。函数是对象。甚至模块也是对象。
sys 模块是一个对象,它有一个叫作 path 的属性;等等。
(字典)Dictionary 的值可以是任意数据类型,包括字符串、整数、对象,甚至其它的 dictionary。在单个 dictionary 里,dictionary 的值并不需要全都是同一数据类型,可以根据需要混用和匹配。
Dictionary 的 key 要严格多了,但是它们可以是字符串、整数或几种其它的类型。
extend (扩展) 与 append (追加) 的差别
>>> li = ['a', 'b', 'c']
>>> li.extend(['d', 'e', 'f'])
>>> li['a', 'b', 'c', 'd', 'e', 'f']
extend 接受一个参数,这个参数总是一个 list,并且把这个 list 中的每个元素添加到原 list 中
>>> li = ['a', 'b', 'c']
>>> li.append(['d', 'e', 'f'])
>>> li['a', 'b', 'c', ['d', 'e', 'f']]
append 接受一个参数,这个参数可以是任何数据类型,并且简单地追加到 list 的尾部
在 list 中搜索
>>> li=['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']
>>> li.index("new")
2
index 在 list 中查找一个值的首次出现并返回索引值
从 list 中删除元素
>>> li=['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']
>>> li.remove("z")
>>> li['a', 'b', 'mpilgrim', 'example', 'new', 'two', 'elements']