现在的位置: 首页 > 综合 > 正文

python tips(3)

2013年04月05日 ⁄ 综合 ⁄ 共 2121字 ⁄ 字号 评论关闭

1. 使用pywinauto自动化框架实现切换程序。

import win32com.client
from pywinauto import Application
from time import sleep, time
apps = {'iexplore':'IEFrame',
        'notepad':'Notepad'}
lst = []
for key:value in apps.items():
    key = key + '_'
    key = Application.Connect(class_name = value)
    lst.append(key[value])
    #print key
    #print key(value)

for i in range(2):
    for obj in lst:
        obj.TypeKeys("{TAB}")
        sleep(.8)

2. python中当使用自身时:__name__ == __main__

被调用时:__name__ == 文件名(不含后缀名)

3. python多重赋值时先把右边都算出后再进行赋值。

4. python中的for循环可以带一个else子句,当循环正常结束时执行其内容,但如果是用break语句跳出的则不执行其内容。如下程序输出了10以内的素数。

for n in range(2, 10):
    for x in range(2, n):
        if n % x == 0:
            print n, 'equals', x, 'x', n/x
    else:
        print n, 'is a prime number'

输出结果为:

>>> 
2 is a prime number
3 is a prime number
4 equals 2 x 2
4 is a prime number
5 is a prime number
6 equals 2 x 3
6 equals 3 x 2
6 is a prime number
7 is a prime number
8 equals 2 x 4
8 equals 4 x 2
8 is a prime number
9 equals 3 x 3
9 is a prime number
>>> 

5. ''' ''' 包含起来的为docstring。可以用print打印出来。如下。

def M():
    '''test docstring'''
    return

print M.__doc__

输出结果为:

>>> 
test docstring
>>> 

6. python函数若形参表中有一个形为**name的形参,在调用时这个形参可以接收一个字典,字典中包含所有不与任何形参匹配的关键字参数,形参表中还可以使用一个特殊的形为*name的形参,它将接受所有不能匹配的位置参数组成的一个序表,*name只能在**name前出现(*name类似于*args,**name类似于**kw),在任意个数形参前可以由0到多个正常的参数。

 

7. Lambda语句被用来创建新的函数对象,并且在运行时返回它们。如下。

def make_repeater(n):
    return lambda s:s*n
twice = make_repeater(2)
print twice('word')
print twice(5)
>>> 
wordword
10
>>> 

这里使用了make_repeater函数在运行时创建新的函数对象,并且返回它。lambda语句用来创建函数对象,本质上,lambda需要一个参数,后面仅跟单个表达式作为函数体,而表达式的值被这个新建的函数返回。

注意:即使是print语句也不能用在lambda形式中,只能使用表达式。

 

8. 列表 list []

序表 tuple

元组 ()  ->一旦生成,不可改变

字典 {}

python中不同类型的对象比较目前也是合法的,结果是确定的但是没有什么意义,不同类型是按类型的名字排序的,所以,列表(list)总是小于字符串(string),字符串总是小于序表(tuple),等等。但是程序中不能依赖这样的比较规则,语言实现可能会改变,不同的数值类型可以按数值来比较,所以0等于0.0,等等。

 

9. 使用"from 包 import 项"这样的格式时,导入的项可以是包的一个子模块(或子包),也可以是包内定义的其它名字如函数、类、变量。导入语句首先查找包内是否定义了所需的项,如果没有则假定它是一个模块然后调入,如果找不到,结果引发ImportError。

相反的,当使用"import item.subitem.subsubitem"这样的格式时,除最后一项可以是包也可以是模块,不允许是前面一项内部定义的类、函数或变量。

 

10. pickle是保存python对象并被其它程序或同一程序以后再运行时调用的标准方法,这种做法的专用术语叫做“持久对象”。

 

11. python中标准例外名是内置的标识符(不是保留关键字)。

 

12. python中try (raise) except finally与C#中try (throw) catch finally有区别。

python中finally子句不论try子句是否发生例外都会执行,例外发生时,先执行finally子句然后重新抛出该例外,当try语句用break或return语句退出时也将执行finally子句。

要注意的是,try语句不能同时拥有except子句和finally子句,需要的话可以嵌套。

 

13. python中的小错误:导出类和基类取相同的名字就可以使用基类的私有变量。

抱歉!评论已关闭.