之前接触过一点python,好久没看了,最近想重新学习一下,同时记录一下自己的学习过程,温故而知新。
python是一门解释性编程语言,源文件是以*.py 结尾的文本文件,由Python解释器(interpreter)解释、执行,不需要编译(对用户来说)。
实际上,python解释器在执行脚本前,会先将脚本编译成字节码文件(以*.pyc结尾),然后再执行。
我们也可以通过Python自带的模块库(py_compile),手动实现这个过程,编写脚本如下:
import py_compile
py_compile.compile(r'D:\workspace\test.py')
#文件名前面的r表示:该字符串不进行转义
自己在学习过程中,语法上需要注意的点,大致罗列一下:
(1) 没有嵌套的语句都在第一列。
(2) 在交互模式下,交互解释器会自动打印表达式的结果,但是在 *.py 脚本文件中则必须使用print语句来进行输出。
(3) 在交互提示模式中,用一个空行结束复合语句。通过插入一个空行,来告诉交互式Python,多行语句已经输入完成了。(在 *.py 文件中不需要空行,空行会被忽略)
(4) 在命令行中执行脚本文件时需要使用文件的扩展名(*.py),但是在导入模块时不能使用文件扩展名。
(5) 在linux中,第一行通常是 #!/usr/bin/python,用来指定Python解释器的路径。更好的一种方法是通过 env 程序来搜索PATH环境变量中罗列出的所有目录,第一行写成 #!/usr/bin/env,这样便于移植。
(6) 通过在 *.py 文件的最后添加 input语句,可以使得双击运行该脚本时,出现的命令提示符窗口不会“一闪而过”(程序执行完成后自动退出)。
参考Head First Python第一章的实例,列表和函数的使用
- 列表(list)
列表的用法同C语言中的数组很相似,列表的功能更强大。
列表没有固定的大小和类型的约束,同一个列表可以包含不同类型的数据,可以对列表进行索引、切片、增加元素、删除元素、排序等操作。
列表的定义:
movies = ["The Holy Grail", "The Life of Brain", "The Meaning of Life"]
实例,逐行输出列表中的每项:
movies = ["The Holy Grail", 1975, "Terry Jones & Terry Gilliam", 91,
["Graham Chapman", ["Michael Palin", "John Cleese",
"Terry Gilliam", "Eric Idle", "Terry Jones"]]]
print movies
for each_item in movies:
if isinstance(each_item, list):
for each_item_inner in each_item:
if isinstance(each_item_inner, list):
for each_item_inner_deeper in each_item_inner:
print each_item_inner_deeper
else:
print each_item_inner
else:
print each_item
- 函数(function)
函数的定义:
def function_name([arguments]):
'''optional documentation string'''
function_suite
由于列表中嵌套有子列表,如果嵌套层数过多,上面的代码结构会变的很复杂和冗余。
我们定义一个函数,将重复的代码用函数替代,并且通过递归调用,解决上面可能出现的嵌套过深的问题。
定义一个函数,递归调用,逐行输出列表中的每一项:
def print_lol(the_list):
for each_item in the_list:
if isinstance(each_item, list):
print_lol(each_item)
else:
print each_item
通过调用print_lol()函数就可以实现逐行输出列表内容了。
上面的代码涉及到了以下内容:
- for * in * 迭代,遍历列表的用法(类似于java中的foreach用法);
- isinstance(,)判断某个特定标识符是否包含某个特定类型的数据;
- if else的语法