Python,现如今非常热门的一种编程语言,在人工智能中大放异彩。做任何事都需要技巧,这可以大大提高效率,学习Python,同样如此!
第一个就是assret语句,让我们看下面一个关于折扣的例子:
def dicountT(price,discount):
price1=price*discount
assert 0<=price1<=price
return price1
print(dicountT(130,0.75))
print(dicountT(1300,7.5))
结果:
97.5
Traceback (most recent call last):
File "E:/3-10/tril.py", line 7, in <module>
print(dicountT(1300,7.5))
File "E:/3-10/tril.py", line 3, in dicountT
assert 0<=price1<=price
AssertionError
很明显,加入断言后,程序在结果不合常理的状况下报错了,从而避免了卖家损失。这个例子很简单,但要说明的是这在测试程序时非常有用,尤其是一些大型复杂的程序。
这里,你可能会有疑问,为什么我们不用异常语句呢?其实,断言是为了告诉开发人员程序中发生了不可恢复的错误,对于一些可以预料的错误,用户可以予以纠正和重试,断言并不是为此而生。
记住,断言是用于内部自检,是一种调试辅助功能,不是用来处理运行错误的机制,目的是让开发者更快找到可能导致bug的根本原因。
下一个就是with语句,with语句非常有用,有助于编写更加清晰易读的Python代码
with open("one.txt",'w') as f:
f.write("onetwo")
这样,我们完成了打开文件并写入内容的功能,同时,with语句确保了打开的文件描述符在程序执行离开with语句的上下文后自动关闭。当然,下面程序也是等同的
f=open("one.txt",'w')
try:
f.write("onetwo")
finally:
f.close()
这也是可行的。但下面这种一定要避免:
f=open("one.txt",'w')
f.write("onetwo")
f.close()
虽然从逻辑上非常非常合理,但一旦调用f.write()时发生异常,这段代码并不能保证文件最后被关闭。
总的来说,with语句不仅可以让处理系统资源的代码更易读,更不会忘记清理或释放资源,因此可以避免bug或资源泄露。
1? 交换变量
不使用另一个变量,实现变量交换。
x=1
y=2
x,y=y,x
print(x)?
print(y)?
2
1
2? 链式赋值
如果需要让多个变量引用同一个对象,则可以使用链式赋值:???????
>>>?x?=?y?=?z?=?1
>>> x, y, z
(1,?1,?1)
3? 多重赋值???????
>>> x, *y, z = 2, 4, 8, 16
>>> x
2
>>> y
[4, 8]
>>> z
16
4? ?利用python集合元素的唯一性去重
???????
>>>?x?=?[1,?2,?1,?4,?8]
>>> y = set(x)
>>> y
{8, 1, 2, 4}
>>> z = list(y)
>>> z
[8, 1, 2, 4]
5? ?字符串倒序
???????
>>> str1="qqaabb"
>>> str2=str1[::-1]
>>> sttr2
'bbaaqq'
?6 ?运算符:or and not
7? ?合并字典
合并两个字典的方法之一就是将它们解包到一个新的字典中:
???????
>>> x = {'u': 1}
>>> y = {'v': 2}
>>> z = {**x, **y, 'w': 4}
>>> z
{'u': 1, 'v': 2, 'w': 4}
8? 学会使用装饰器