Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4025179
  • 博文数量: 626
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 11080
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-23 13:08
文章分类

全部博文(626)

文章存档

2015年(72)

2014年(48)

2013年(506)

分类: Python/Ruby

2013-09-27 09:55:44

Python学习笔记(3)



1)Statements and Syntax
Hash mark (#)表示Python注释
NEWLINE(/n)是标准行操作符
Backslash(/)表示一行继续
Semicolon(;)在同一行连接两个语句
Colon(:)从suite中分隔首行
Suites通过缩进进行限制
Python文件以模块进行组织


2)Variable Assignment
等号(=)是赋值操作符
>>> anInt = -12
>>> String = 'cart'
>>> aFloat = -3.1415*(5.0**2)
>>> anotherString = 'shop'+'ping'
>>> aList = [3.14e10, '2nd elmt of a list', 8.82-4.371j]
多个赋值
>>> x,y,z = 1,2,'a string'
>>> x
1
>>> y
2
>>> z
'a string'

例子:
交换x和y的值
>>> (x,y) = (5,6)
>>> x
5
>>> y
6
>>> (x,y) = (y,x)
>>> x
6
>>> y
5


3)Identifiers
有效的Python标识符:
 - 第一个字符必须是字母或下划线
 - 其后的字符可以是字母、数字或下划线
 - 大小写敏感
 
关键字:目前有28个关键字
and elif global or assert else if pass
break except import print class exec in raise
continue finally is return def for lambda try
del from not while

Built-ins
Python内建的都应该做关键字处理,作为系统保留对待。
Python不支持标识符重载。

特殊的下划线标识符
Python指定了特殊的带下划线前缀或后缀的变量。
_xxx 不用‘ from module import * ’ 导入
_xxx__ 系统定义的名字
__xxx 请求私有名


4)Document
Python提供了一个机制,文档字符串能通过__doc__特殊变量动态取回。在模块、类声明、或函数声明的第一个未赋值字符串能通过使用obj.__doc__访问,obj代表模块、类或函数名。

Indentation
缩进在Python中扮演了一个重要角色。缩进4个字符最佳,缩进代表某个块。

Module Structure and Layout
模块有简单的物理方式和逻辑组织。在每个文件内,应该建立一致的、易读的结构。最好是按如下进行布局:
  -startup line 开始行
  -module documentation 模块说明文档
  -module import 模块导入部分
  -variable declarations 变量声明
  -class declarations 类声明
  -function declarations 函数声明
  -"main" body 模块主体部分

例子:
# /usr/bin/env python
"this is a test module"
import sys
import string
debug = 1
class FooClass:
  "Foo Class"
  pass
def test():
  "test function"
  foo = FooClass
  if debug:
  print 'ran test()'
if __name__ == '__main__':
  test()

在主体部分创建测试
良好的编程习惯是为整个应用程序提供一套测试集。


5)Memory Management
内存管理
  -变量并不提前声明
  -变量类型不需声明
  -在程序员部分无内存管理
  -变量名可回收再用
  -del语句允许清晰地重新分配
一旦某数据对象不再需要时,Python的垃圾回收器会自动释放该数据对象。此行为无需编程人员操心。
Python通过跟踪对象的引用数量,来决定对象是否需要。这称为“引用计算”。

del语句
del语句移除一对象的单个引用,其语法如下:
del obj1[, obj2 [,...objN...]]
例如:
# 初始化string对象,设置引用数为1
foo1 = 'foobar'
# 通过赋值给另一变量,增加引用数
foo2 = foo1 # 创建一个别名
# 通过函数调用再次增加引用数
check_val(foo1)
# 从命名空间移除foo2;'foobar'对象的引用数减少
del foo2
# 移除'foobar'对象的最后一个引用,减少其引用数为0,最终导致对象变成不可访问的。
del foo1


6)第一个Python程序
#!/usr/bin/env python

"fgrepwc.py -- searches for string in text file"

import sys
import string

# print usage and exit
def usage():
  print "usage: fgrepwc [-i] string file"
  sys.exit(1)

# does all the work
def filefind(word, filename):
   
  #reset word count
  count = 0
   
  # can we open file? if so, return file handle
  try:
  fh = open(filename, 'r')
  # if not, exit
  except:
  print filename, ":", sys.exc_info()[1]
  usage()
   
  # read all file lines into list and close
  allLines = fh.readlines()
  fh.close()
   
  # iterate over all lines of file
  for eachLine in allLines:
  # search each line for the word
  if string.find(eachLine, word)>-1:
  count = count+1;
  print eachLine,
   
  # when complete, display line count
  print count
   
#validates arguments and calls filefind()
def checkargs():
  # check args; 'argv' comes from 'sys' module
  argc = len(sys.argv)
  if argc != 3:
  usage()
  # call fgrepwc.filefind() with args
  filefind(sys.argv[1], sys.argv[2])
   
#execute as application
if __name__ == '__main__':
  checkargs()
阅读(1011) | 评论(0) | 转发(0) |
0

上一篇: python学习笔记(1)

下一篇:TFTP协议介绍

给主人留下些什么吧!~~