1 python是强类型语言,变量必须声明且初始化,而且变量名称在不同地方可以代表不同类型的变量;
2 C语言中变量名代表了数据的存放位置,而python中变量名只是一个对象的引用,而id(变量)才能给出变量地址,type(变量)才能给出变量类型;
3 以一个下划线开始的标识符如_foo 不能用from module import *语句导入。前边有两个下划线的标识符,如__bar,被用来实现类私有属性。前后均有两个下划线的标识符,如__init__被特殊方法保留;
4 空类型(None)表示该值是一个空对象,比如没有明确定义返回值的函数就是返回 None。空类型没有任何属性,经常被用做函数中可选参数的默认值。None 的布尔值为假;
5 Python 中用 True 和 False 来定义真假,你可以直接用 a=True 或 a=False 来定义一个布尔型变量;
6 在Python中,None、任何数值类型中的 0、空字符串’’,空元组(),空列表[],空字典{}都被当作 False,其他对象均为True;
7 Python支持的数据类型int long float complex,实际上我们把 Python的long和int理解为同一种类型就可以了,因为当一个整数超过int的范围后,Python会自动将其升级为长整型,Python的float是64bit的浮点数。
8 在Python中定义一个标准字符串(str)可以使用单引号、双引号、三引号,这使得 Python 输入文本比 java 更方便。比如当 Str 的内容中包含双引号时,就可以用单引号定义,反之亦然。当字符中有换行符等特殊字符时,可以直接使用三引号定义。这样就方便了很多不用去记那些乱七八糟的转义字符。当然Python也支持转义字符,且含义与java基本一样。在 Python中定义一个Unicode字符串,需要在引号前面加上一个字符u。s="hello", s[0]表示h,s[-1]表示i。
9 global定义的变量是全局变量。
10 Python中列表(list)类似于java中的ArrayList,用于顺序存储结构。列表用符号[]表示,中间的元素可以是任何类型(包括列表本身,以实现多维数组),元素之间用逗号分隔。取值或赋值的时候可以像 C 数组一样,按位置索引。列表的值可以改变。 Python 核心数据类型的一个优秀的特性就是它们支持任意的嵌套。能够以任意的组合对其进行嵌套。这种特性的一个直接应用就是实现矩阵,或者 Python 中的多维数组。
11 用过java中的字典的人对Hashtable应该不会陌生,Python 里的哈希表就是字典(dict)了。与 set 类似,字典是一种无序存储结构,它包括关键字(key)和关键字对应的值(value)。dictionary={key:value}#当有多个键值时,用逗号进行分割。
12 元组与列表非常相似,它用()而不是[]括起来的序列。元组比列表的速度更快,但元组是一个不可变的序列,也就是与 str 一样,无法在原位改变它的值。tuple是写保护的。
13 Python 中的 set 和 java 中的集合不是一个概念,这是翻译的问题,Python 中的集合是指无序的、不重复的元素集,类似数学中的集合概念,可对其进行交、并、差、补等逻辑运算。常见集合的语法为:s=set([‘a’,’b’,’c’])。不过 set 在 Python3.0 中发生了较大的变化,创建一个集合的语法变成了:S={1,2,3},用花括号的方法,与后边要提到的 dict 类似。如果在set中传入重复元素,集合会自动将其合并。
14 Python 提供的算术运算符+、-、*、/、%、+=、幂(**)和取整除(//)。比较操作符== != > < >= <=,还有一个is操作符,用来判断两个变量是否指向同一内存空间,另外还有一个 b?x:y。
15 Python 的逻辑运算符与 java 有较大区别, Python 用关键字 and or not 代替了 java 语言中的逻辑运算符 && || !,此外 Python 中参与逻辑运算符的操作数不限于布尔类型,任何类型的值都可以参与逻辑运算中去。
16 列表内涵的一般形式如下,我们可以把[]内的列表内涵写为一行,也可以写为多行。[表达式 for item1 in 序列 1 … for itemN in 序列 N if 条件表达式]
17 在一个 Python 程序中的任何一个地方,都存在几个可用的名字空间。每个函数都有着自已的名字空间,叫做局部名字空间,它记录了函数的变量,包括 函数的参数和局部定义的变量。每个模块拥有它自已的名字空间,叫做全局名字空间,它记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量。还有就是内置名字空间,任何模块均可访问它,它存放着内置的函数和异常。
18 当一行代码要使用变量 x 的值时,Python 会到所有可用的名字空间去查找变量,按照如下顺序: 1.局部名字空间 - 特指当前函数或类的方法。如果函数定义了一个局部变量 x, Python 将使用这个变量,然后停止搜索。 2.全局名字空间 - 特指当前的模块。如果模块定义了一个名为 x 的变量,函数或类,Python 将使用这个变量然 后停止搜索。 3.内置名字空间 - 对每个模块都是全局的。作为最后的尝试,Python 将假设 x 是内置函数或变量。 如果 Python 在这些名字空间找不到 x,它将放弃查找并引发一个 NameError 的异常,同时传递 There is no variable named ‘x‘ 这样一条信息,象 Python 中的许多事情一样,名字空间在运行时直接可以访问。特别地,局部名字空间可以通过内置的 locals 函数来访问。全局(模块级别)名字空间可以通过 globals 函数来访问
19 Python 是一种动态语言,变量在使用之前不需要定 义,所以你可以不在类定义中添加成员变量,而是在运行时动态地添加它们。
20 Python 的类提供了类似C#构造函数的东西:__init__(注意是前后是两个下划线),类在实例化时会首先调用这个函数,我们可以通过重写__init__函数,完成变量的初始化等工作。与 C#不同的地方是,Python 不支持无参数的初始化函数,你至少需要为初始化函数指定一个参数,即对象实例本身(self).
21 Python与C#一样支持静态方法。在C#中需要使用关键字static声明一个静态方法,而在 Python 中是通过静态方法修饰符@staticmethod来实现的
22 一个python文件称之为一个module,一堆module构成一个package。例如,Lib目录中的xml文件夹就是一个包,这个包用于完成XML的应用开发。Xml包中有几个子包:dom、sax、etree和parser。文件__init__.py (注意是两个下滑线)是 xml 包的注册文件,如果没有该文件, Python将不能识别xml包。在系统字典中定义了xml包。包必须至少含有一个__init__.py 文件,该文件的内容可以为空。__init__.py 用于表示当前文件夹是一个包。
23 Python内置属性,__name__ __doc__ __file__ __package__