Python:学习笔记(二)

1. 如何知道一个列表包含于另一个列表?

一般,我们检测一个变量或者是常量是否是列表的元素,我们用 in。例如:

if 2 in [1,2,3]:
    print "2 is in the list"
#或者
for m in [1,2,3,4]:
    print m, "\t"

还有一种检测一个列表的方法(但是两个列表的元素必须是非重复的),是否包含于另一个列表,则要使用set() 和其方法 issubset, 例如:

a=[1,2,3]
b=[1,2,3,4,5,6,7,8]
if set(a).issubset(set(b)):
    print "OK" #答案是"OK"

2. 解决python无法解析中文注释的问题

在 '#!/usr/bin/env python' 下面用

#_*_ coding:utf-8 _*_
# 或者
#coding=utf-8
print "OK" #共两种方法 

3. getopt模块对命令行选项辨认情况。

getopt通常可以辨认在文件名之前出现的以 "-", "--" 为前缀的选项,(也就是说只要名称前加-/--都可以被辨认为选项。)例如:

./showup.py -f -m DC223423.zip

“-f”和 “-m”都是可以辨认的,当这两个选项没有定义的时候,不需要添加额外的代码,程序会给出相应的错误提示。例如 option -f not recognized。

getopt不能辨认在文件名之后的,以"-"和"--"为前缀的选项,会把它们看作是文件名。例如:

./showup.py DC23234.zip -f -N

"-f" 和 "-N"都不能被辨认出来是选项,而是和DC23234.zip一样被看作为文件名。需要额外的代码加以判断。

4. ImportError

我们有时候需要安装第三方模块,所以脚本首先需要检测第三方模块是否安装了,用try: except结构。例如:

import sys
try:
    import pexpect
except ImportError, err:
    print str(err)
    sys.exit(2)

5. cgi和cgitb

如果要用python写页面脚本,cgi是必须要加上的。服务器会自动在cgi-bin目录下调用那些脚本。使用cgi库,不再需要用<html></html>,<head></head>,<body></body>标注页面。只需要直接print内容,但是前面必须要用 print "Coentent-Type: text/html"。例如:

#!/usr/bin/env python
#_*_coding=utf-8_*_
import cgi #必须要有的
import cgitb  #这两行可加可不加,有页面gdb的功能
#cgitb.enable(display=0, logdir="/tmp") #或者使用这个让错误信息存在文件夹中
cgitb.enable() print "Content-Type: text/html" #必须要写的头文件 print #输入一个回车符 print "<TITLE>你好</TITLE>" #显示内容即可 print "<H!>世界</H!>

6. 安装第三方模块

一般第三方模块下载后都会有setup.py的文件,教材上会较使用命令 sudo python setup.py install 来安装模块。其实,也不需要那么麻烦,只要用sys.path.append(path) 找到模块解压缩后的文件夹,然后 import module 就可以使用了。例如:

#!/usr/bin/env python
#_*_coding=utf-8_*_
import sys
sys.path.append("web036py") #模块所在文件夹的起始地址
import web # 可以装载了

 7. [ '' ] 和 [ ]

[''] 是有一个空字符作为元素的列表;而第二个是一个空字符。 [''] 在比较表达式中不能等同与 True,而是 True;而 [] 在比较表达式中等同与 False。例如:

a=['']
b=[]
if not a:
    print "a is emtpy" #不能输出
elif not b:
    print "b is emtpy" #会输出

8. 判断列表的两种方法

对于一个变量是否是列表的方法我知道的有两种,

a = []
#第一种方法
if type(a) is list:
    print "a is a list" 
#第二种方法
if isinstance(a, list):
    print "a is a list"

9. int(num [,base])的exception

int()接收一个数值字符串表示,转化其为数值。如果字符串不是数值表示例如:"23aa", "hello"等,会有 ValueError的exception,所以在不能确定参数值的时候,最好使用try except。

10. raw_input()

是从用户那里得到数据输入的最快捷的方法,不论输入什么,都是字符串。需要用int()强制转换才能用于计算.没有相应的except。

11. help()

在互交解释器中,如果需要得到一个生疏函数的帮助,只需要对它调用内建函数help()。通过用函数名作为help()的参数就能得到相应的帮助信息。

12. 互交解释器和print()

print语句调用str()函数显示对象,而互交解释器则调用repr()函数来显示对象。

13. Python中一切都是对象

这句话在数值上有非常好的体现,例如 a=23, a是对象。直接输出23, 23也是对象,但是如果要使用整数的方法,需要用括号括起来,例如(23).__bit_length(), (-111).__abs__()。

如果要证明,可以用 isinstance(),例如 a=23, isinstance(a, int) 结果为True。

14. dir(obj)/help(obj)

这个是内置函数,显示在当前运行环境中,加载的模块或者自定义的类、对象的属性(包括隐形的属性如__name__。obj参数可以包括所有的类型,没有限制。

15. 内置函数应用的局限性(str(obj), len(obj))

有许多的内置函数如 type() help() 等 对参数是没有要求的,一般任何参数都可以放入其中;但是有些内置函数对参数是有要求的,例如:str(), len()等,它们要求其参数对象必须要有相应的属性,例如:'__str__', '__len__',,才能调用,否则会报 TypeError的错误。也就是说它们应用的对象类型是有限的。

16. NULL在Python中的应用:

  1.如果函数没有返回值(人工设置),则自动返回一个NULL.

17. print的用法

1.print 默认是sys.sdtout的输出,2.而且可以使用%来格式化输出,3,可以使用 >> 重定向到文件或者sys.stdout, sys.stderr等.4. print语句默认会给每一行添加一个换行符,只要在print语句的最后添加一个逗号(,),就改为空格分割.

posted @ 2012-07-05 14:45  CCJPP  阅读(494)  评论(0)    收藏  举报