一、python执行过程
上图为一个python代码的执行流程。首先,源代码需要以.py结尾,经过编译器生成一系列的字节码,其生成的字节码是以.pyc结尾的文件;之后经过语义解释器输入到执行器中执行程序。
一个Python程序可以分解为模块、语句、表达式和对象四个部分。其中,程序由模块构成、模块包含语句、语句包含表达式、表达式建立并处理对象。python是一门面向对象的语言,其主要特点是:以数据为中心,所有处理代码都围绕数据结构展开;主要方法是如何设计数据结构,并提供对此数据所允许的操作。而面向过程的特点为:以指令为中心, 由指令处理数据,主要解决的是如何组织代码解决问题(如C语言)。
二、python的对象引用(变量)
python将所有数据存为内存对象,变量就是指内存对象的引用。python中的变量是动态类型,即在任何时刻,某个对象的引用都可以重新引用一个不同的对象(可以是不同的数据类型)。
In [32]: a=[1,2,3,4,5] In [33]: type(a) #此时变量a的类型为列表 Out[33]: list In [34]: a=(1,2,3,4) In [35]: type(a) #重新赋值后,a的类型变成了元组 Out[35]: tuple
使用内建函数type()可以返回给定数据的数据类型。"="用于将变量名与内存中的某对象绑定。
变量的命名规则
只能包含字母、 数字和下划线, 且不能以数字开头; 区分大小写; 禁止使用保留关键字。
命名的惯例
以单一下划线开头变量名(_x)不会被 from module import 语句导入; 前后有下划线的变
量名(__x__)是系统定义的变量名, 对 python 解释器有特殊意义; 以两个下划线开头但是结
尾没有下划线的变量名(__x)是类的本地变量; 交互模式下, 变量名”_”用于保存最后表达式
的结果; 变量名没有类型, 对象才有。
三、数据类型
数据结构:通过某种方式(例如对元素)进行编号组织在一起的数据元素的集合。
python常用数据类型
序列类型:
列表:使用[]创建,如:[‘hello‘,‘world‘,‘mylinux‘] 可变序列
元组:使用()创建,如:(‘one‘,‘tow‘,‘three‘) 不可变序列
字符串:也属于序列类型 不可变序列
集合类型:集合set、frozenset(不可变集合)
映射类型:字典dict,使用{}创建,如{‘a‘:b}
组合数据类型也是序列, 因此可以嵌套。 列表和元组不是真正存储数据, 而是存放对象引用;
Python 对象可以具有其被调用的特定方法(函数); 元组、 列表以及字符串等数据结构,其长度可以使用内置函数 len()测量。
逻辑操作符:
Python 提供了 4 组逻辑运算
身份操作符:
is:判定左端对象引用是否相同于右端对象引用, 也可以与 NONE 进行
比较操作符:<,>,<=,>=,!=,==
成员操作符:in 或 not in : 测试成员关系
逻辑运算符:and,or,not
四、输入/输出
对于输入输出,python2.x与python3.x中有所不同。在python2中输入有两个函数:input()和raw_input(),而输出使用的是print语句。raw_input()输入的是数值,而使用input()输入时使用的是变量,当输入变量为定义时会报错。python2.x中输出语句的格式:
Print “string %format1 %format2 ...” %(variable1,variable2,...)
格式:%[(name)] [flags] [width] [.precision] typecode
name位于括号中的一个属于后面的字典的键名, 用于选出一个具体项
flag下面标志中的一个或多个
-: 左对齐, 默认右对齐; +:包含数字符号, 整数也会带"+"; O:表示一个零填充
width指定最小宽度的数字
一个小数点, 用于按照精度分割字段的宽度
precision指定要打印字符串中的最大字符个数, 浮点数中小数点之后的位数,或者整数的最小位数。
>>> raw_input("please input:") please input:a #输入值a ‘a‘ >>> input("please input:") please input:a #输入的为变量a,此时a未定义报错 Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<string>", line 1, in <module> NameError: name ‘a‘ is not defined >>> a=‘1234‘ #定义变量a,输入 >>> input("please input:") please input:a ‘1234‘ #取得的结果为a所对应的值
在python3.x中使用input()函数作为输入,输入为值,print()函数作为输出。
In [37]: input("please input:") #等同于python2.x中的raw_input()函数 please input:a Out[37]: ‘a‘
五、语句和语法
注释: #, 可以从一行的任何地方开始
续行: \ ‘‘‘: 闭合操作符, 单一语句跨多行
代码组:缩进相同的一组语句构成的代码块;首行以关键字开始, 如 if、 while 等, 以冒号结束
Python 使用缩进来分隔代码组, 同一代码组的代码行必须严格左右对齐
同一行放置多个语句:以分号作为分隔符
模块:每一个 python 脚本文件都可以被当作一个模块;模块里的代码可以是一端直接执行的脚本, 也可以是一些类似库函数的代码从而可由别的模块执行导入( import)。
六、主程序
主程序:无论当前模块是被别的模块导入还是作为脚本直接执行, 都会执行的代码部分 。
所有模块都有能力执行代码:最高级倍的 python 语句(没有缩进的)在模块被导入时就会执行;妥当的做法: 除了那些真正需要执行的代码以外, 所有功能代码都通过函数建立;因此仅在主程序模块中编写大量的顶级可执行代码; 用于被导入的模块只应该存在少量顶级可执行代码。
__name__指示模块应该被加载:如果模块是被导入, __name__的值是模块名字; 如果模块是直接执行, __name__的值是’__main__’。
获取帮助文档的方式:
获取对象支持使用的属性和方法: dir()
某方法的具体使用帮助: help(list.pop)
获取可调用对象的文档字串: print obj.__doc__
本文出自 “随风而飘” 博客,请务必保留此出处http://yinsuifeng.blog.51cto.com/10173491/1900628
原文地址:http://yinsuifeng.blog.51cto.com/10173491/1900628