刚开始学习Python,积淀点自己的见解。教材:《Python核心编程》
从零开始:
1.基本语法:
- 井号(#)表示之后的字符为 Python 注释
- 换行 (\n) 是标准的行分隔符(通常一个语句一行)
- 反斜线 ( \ ) 继续上一行
- 分号 ( ; )将两个语句连接在一行中
- 冒号 ( : ) 将代码块的头和体分开
- 语句(代码块)用缩进块的方式体现
- 不同的缩进深度分隔不同的代码块
- Python 文件以模块的形式组织
2.合法的Python标识符
- 第一个字符必须是字母或下划线(_)
- 剩下的字符可以是字母和数字或下划线
- 大小写敏感
3.模块结构和布局
- # (1) 起始行(Unix)
- # (2) 模块文档
- # (3) 模块导入
- # (4) 变量定义
- # (5) 类定义
- # (6) 函数定义
- # (7) 主程序
起始行通常在类Unix环境下才使用,有起始行就能够仅仅输入脚本名称来执行脚本,无需直接调用解释器。
(1) 起始行
通常只有在类Unix 环境下才使用起始行,有起始行就能够仅输入脚本名字来执行脚本,无
需直接调用解释器。
比如:#!/usr/bin/python
(2)模块文档
简要介绍模块的功能及重要全局变量的含义,模块外可通过 module.__doc__ 访问这些内容。
(3)模块导入
导入当前模块的代码需要的所有模块;每个模块仅导入一次(当前模块被加载时);函数内部的模块导入代码不会被执行, 除非该函数正在执行。
(4)变量定义
这里定义的变量为全局变量,本模块中的所有函数都可直接使用。从好的编程风格角度说,除非必须,否则就要尽量使用局部变量代替全局变量,
如果坚持这样做,你的代码就不但容易维护,而且还可以提高性能并节省内存。
(5)类定义语句
所有的类都需要在这里定义。当模块被导入时class 语句会被执行, 类也就会被定义。类的文档变量是class.__doc__。
(6)函数定义语句
此处定义的函数可以通过module.function()在外部被访问到,当模块被导入时 def 语句会被执行, 函数也就都会定义好,函数的文档变量是function.__doc__。
(7) 主程序
无论这个模块是被别的模块导入还是作为脚本直接执行,都会执行这部分代码。通常这里不会有太多功能性代码,而是根据执行的模式调用不同的函数。
时刻记住一个事实,那就是所有的模块都有能力来执行代码。最高级别的Python 语句--
也就是说, 那些没有缩进的代码行在模块被导入时就会执行, 不管是不是真的需要执行。由
于有这样一个“特性”,比较安全的写代码的方式就是除了那些真正需要执行的代码以外, 几
乎所有的功能代码都在函数当中。再说一遍, 通常只有主程序模块中有大量的顶级可执行代码,
所有其它被导入的模块只应该有很少的顶级执行代码,所有的功能代码都应该封装在函数或类
当中。
4.和C不一样的变量名定义
- 变量无须事先声明 变量无须指定类型 程序员不用关心内存管理 变量名会被“回收”
del 语句能够直接释放资源
1 #!/usr/bin/env python 2 3 'makeTextFile.py -- create text file' 4 5 import os 6 ls = os.linesep 7 8 # get filename 9 while True: 10 11 if os.path.exists(fname): 12 print "ERROR: '%s' already exists" % fname 13 else: 14 break 15 16 # get file content (text) lines 17 all = [] 18 print "\nEnter lines ('.' by itself to quit).\n" 19 20 # loop until user terminates input 21 while True: 22 entry = raw_input('> ') 23 if entry == '.': 24 break 25 else: 26 all.append(entry) 27 28 # write lines to file with proper line-ending 29 fobj = open(fname, 'w') 30 fobj.writelines(['%s%s' % (x, ls) for x in all]) 31 fobj.close() 32 print 'DONE!'
以上例子是书中的原版,不过有错误(弱弱的说下)
测试无误的例子:
#!/usr/bin/python 'maek text file pythou -- create text file' import os ls = os.linesep # get filename fname = raw_input('Enter file name') while True: if os.path.exists(fname): print "ERROR: '%s' already exists" % rname else: break # get file content lines all =[] print "\nEnter lines ('.'by iself to quit).\n" while True: entry = raw_input('>') if entry == '.': break else: all.append(entry) # write lines to file with proper line-ending fobj = open(fname, 'w') fobj.writelines(['%s%s' % (x, ls) for x in all]) fobj.close() print 'DONE !'
我修改过的例子是自己按照C语言的习惯缩进的,不敢说一定对,但我运行后没有出现错误。