Python的语言特性

Python的语言特性

Python是一门具备强类型(即变量类型是强制要求的)、动态性、隐式类型(不须要作变量声明)、大小写敏感(var和VAR表明了不一样的变量)以及面向对象(一切皆为对象)等特色的编程语言。你能够很容易的经过Python解释器获取帮助。若是你想知道一个对象(object)是如何工做的,那么你所须要作的就是调用help(<object>)!另外还有一些有用的方法,dir()会显示该对象的全部方法,还有<object>.__doc__会显示其文档python

语法

  • Python中没有强制的语句终止字符,且代码块是经过缩进来指示的。缩进表示一个代码块的开始,逆缩进则表示一个代码块的结束
  • 声明以冒号(:)字符结束,而且开启一个缩进级别
  • 行注释以井号字符(#)开头,多行注释则以多行字符串的形式出现。赋值(事实上是将对象绑定到名字)经过等号(“=”)实现,双等号(“==”)用于相等判断,”+=”和”-=”用于增长/减小运算(由符号右边的值肯定增长/减小的值)。这适用于许多数据类型,包括字符串。你也能够在一行上使用多个变量

序列数据类型

  • Python具备列表(list)、元组(tuple)和字典(dictionaries)三种基本的数据结构。
  • list列表的特色跟一维数组相似(固然你也能够建立相似多维数组的“列表的列表”),能够嵌套列表,能够存储多种数据类型,能够排序,截取,插入,复制,扩展长度等。如:
mylist = ["List item 1", 2, 3.14] sample = [1, ["another", "list"], ("a", "tuple")] membernum = [1,2, "冰原狼", 90, "雄鹿", "狮子"]
  • 元组(tuple)数组与list不一样的是list元素长度均可被修改,数组中的元素和长度是不能够被修改的,元组是不可变的一维数组,数组中第一个元素索引值(下标)为0,使用负数索引值可以从后向前访问数组元素,-1表示最后一个元素。数组元素还能指向函数
temp=("橙子","苹果","句子","车厘子")
  • 字典:字典是另外一种可变容器模型,且可存储任意类型,对象字典的每一个键值(key=>value)对用冒号(:)分割,每一个对之间用逗号(,)分割,整个字典包括在花括号({})中
>>> mydict = {"Key 1": "Value 1", 2: 3, "pi": 3.14} >>> mydict["pi"]

Python 模块

  • Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句,模块能定义函数,类和变量,模块里也能包含可执行的代码。
  • 模块定义好后,咱们可使用 import 语句来引入模块,好比要引用模块 math,就能够在文件最开始的地方用 import math 来引入。在调用 math 模块中的函数时,用模块名.函数名
  • Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中:
#这个声明不会把整个 fib 模块导入到当前的命名空间中, #它只会将 fib 里的 fibonacci 单个引入到执行这个声明的模块的全局符号表。 from fib import fibonacci
  • From…import* 语句 把一个模块的全部内容全都导入到当前的命名空间也是可行的:from modname import *
  • 当你导入一个模块,Python 解析器对模块位置的搜索顺序是:首先搜索当前目录,若是不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每一个目录,若是都找不到,Python会察看默认路径。UNIX下,默认路径通常为/usr/local/lib/python/
  • 模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录

命名空间和做用域

每一个函数都有本身的命名空间。类的方法的做用域规则和一般函数的同样。 Python 会智能地猜想一个变量是局部的仍是全局的,它假设任何在函数内赋值的变量都是局部的。 所以,若是要给函数内的全局变量赋值,必须使用 global 语句。global VarName 的表达式会告诉 Python, VarName 是一个全局变量,这样 Python 就不会在局部命名空间里寻找这个变量了。shell

Python中的包

  • 包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。简单来讲,包就是文件夹,但该文件夹下必须存在 _init_.py 文件, 该文件的内容能够为空。_int_.py用于标识当前文件夹是一个包。
  • 当访问包内的模块 方法的时候,会执行_int_.py一次文件里的代码

例若有一个包叫package_runoob,包内有runoob1.py文件和_int_.py 文件里测试代码:编程

if __name__ == '__main__': print('做为主程序运行') else: print('package_runoob 初始化')

当在包外部(或包的同级)调用runoob1内的方法的时候,会执行一次_int_.py里的代码。数组

globals() locals() 函数 和reload() 函数

根据调用地方的不一样,globals() 和 locals() 函数可被用来返回全局和局部命名空间里的名字。 若是在函数内部调用 locals(),返回的是全部能在该函数里访问的命名。 若是在函数内部调用 globals(),返回的是全部在该函数里能访问的全局名字。 两个函数的返回类型都是字典。因此名字们能用 keys() 函数摘取。数据结构

当一个模块被导入到一个脚本,模块顶层部分的代码只会被执行一次。 所以,若是你想从新执行模块里顶层部分的代码,能够用 reload() 函数。该函数会从新导入以前导入过的模块。语法以下: reload(module_name)编程语言

异常处理

python提供了两个很是重要的功能来处理python程序在运行中出现的异常和错误。你可使用该功能来调试python程序。函数

  • 异常处理 ,捕捉异常可使用try/except语句。try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。若是你不想在异常发生时结束你的程序,只需在try里捕获它。若是在try子句执行时没有发生异常,python将执行else语句后的语句(若是有else的话),而后控制流经过整个try语句;例如:
try: fh = open("testfile", "w") fh.write("这是一个测试文件,用于测试异常!!") except IOError: print "Error: 没有找到文件或读取文件失败" else: print "内容写入文件成功" fh.close()

使用except而带多种异常类型:

try:
    正常的操做
   ...................... except(Exception1[, Exception2[,...ExceptionN]]]): 发生以上多个异常中的一个,执行这块代码 ...................... else: 若是没有异常执行这块代码

try-finally 语句

try: <语句> finally: <语句> #退出try时总会执行 raise
  • 断言(Assertions)
相关文章
相关标签/搜索