1.判断列表中是否存在某值,并将结果赋值给一个变量。
>>>a = [1,2,3]
>>>b = 1 in a
>>>print a
True
>>>c = 4 in a
>>>print c
False
2.可变参数
当要使函数接受元祖或字典形式的参数的时候,有一种特殊的方法,它分别使用*和**前缀,这种方法在函数需要获取可变数量的参数的时候很有用。
>>> def powersum(power, *args):
... '''Return the sum of each argument
raised to specified power.'''
... total = 0
... for i in args:
... total += pow(i, power)
... return total
...
>>> powersum(2, 3, 4)
25
>>> powersum(2, 10)
100
由于在args变量前有*前缀,所有多余的函数参数都会作为一个元组存储在args中,如果使用的是**前缀,多余的参数则会被认为是一个字典的键值对。
3.在赋值操作中使用if...else...
>>>a = 1
>>>b = a if a==1 else 2
>>>print b
1
4.真值测试
在python中:
任何非零数字或者非空对象都为真。
数字零、空对象以及特殊对象None都认定为假。
比较和相等测试会递归地应用在数据结构中。
比较和相等测试会返回True或者False。
布尔and和or运算符会返回真或者假的操作对象。
Python中有三种布尔表达式运算符:
X and Y
如果X和Y都为真,就是真。
X or Y
如果X和Y都为真,就是真
not X
如果X为假,那就是真
and和or运算符总是返回对象,不是运算符左侧的对象,就是右侧的对象。
就or测试而言,python会由左至右求算操作对象,然后返回第一个为真的操作对象,再者,python会在其找到的第一个真值操作数的对方停止,这通常叫做短路计算,因为求出结果后,就会使表达式其余部分短路。and正好相反,会由左至右求算操作对象,然后返回第一个为假的操作对象。
>>>2 and 3, 3 and 2
(3,2)
>>>[] and {}
[]
>>>3 and []
[]
5.python的isinstance函数
isinstance函数是python的内置函数。
isinstance(object, classinfo) :如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例, 返回True。如果object不是一个给定类型的的对象, 则返回结果总是False。
如果classinfo不表示一个类(类型对象), 那么它要么是一个类的元组, 或者递归地包含这样的(由数据类型构成的)元组。其他的序列类型是不被允许的。
>>> isinstance(1, int)
True
>>> isinstance(1.0, float)
True
>>> class myClass:
pass
>>> test = myClass()
>>> isinstance(test, myClass)
True
6.python的with用法
在python2.5+中可以用with来保证关闭打开的文件。
with open('hello.txt') as f:
do some file operations
为什么要引入with呢? 在之前如果要保证关闭文件需要这样:
f = open('hello.txt')
try:
do some file operations
finally:
f.close()
为了简化这些操作,pyhton2.5中引入with,在进入with时python会自动调用对象的__enter__ 函数,离开with时会调用 __exit__ 函数,如下所示。
class SomeThing(object):
def __enter__(self):
set things up
return self
def __exit__(self, type, value, traceback):
tear things down
7.strip函数、lstrip函数和rstrip函数
Python中的strip用于去除字符串的首尾字符,同理,lstrip用于去除左边的字符,rstrip用于去除右边的字符。
这三个函数都可传入一个参数,指定要去除的首尾字符。需要注意的是,传入的是一个字符数组,编译器去除两端所有相应的字符,直到没有匹配的字符。
比如:theString = 'saaaay yes no yaaaass'print theString.strip('say')theString依次被去除首尾在['s','a','y']数组内的字符,直到字符在不数组内。所以,输出的结果为: yes no 比较简单吧,lstrip和rstrip原理是一样的。