python的一些常用问题

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原理是一样的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值