本文长期更新,直到不再使用Python。本文主要收集整理短小的Python代码片段。文中代码均可直接在网页中运行、调试、查看运行结果,方便动手实践,加强印象。
此处非广告行为,仅方便大家动手实践。因为无需登录即可运行Python代码的网址并不多,如果有更好的网站,欢迎评论补充。
Python3 在线工具 | 菜鸟工具 (runoob.com)https://c.runoob.com/compile/9/
点击进入网址后,粘贴代码,点击运行即可查看结果。
class Apple():
def __init__(self):
print("create a Apple.")
# appA = Apple()
# appB = Apple()
# appC = Apple()
# 可简写成:
appA, appB, appC = [Apple() for x in range(0,3)]
# 三个对象同类型但各不相同
print(appA)
print(appB)
print(appC)
输出:
create a Apple.
create a Apple.
create a Apple.
<__main__.Apple object at 0x00000122573A8D00>
<__main__.Apple object at 0x00000122573A8CD0>
<__main__.Apple object at 0x00000122573A8E80>
a = (8*100 - 6*100)/2*100
# 此时a是多少,是不是1呢?
# 可将下面代码粘贴到编译器里运行看看
print((8*100 - 6*100)/2*100)
# 正常代码
info = {'name':'Lucy Li', 'sex': 'female'}
if info['name'] and 'Lucy' in info['name']:
print("Yes")
else:
print("不是Lucy")
如果我们犯了错误,想从 info 中获取 年龄 age,那会怎么样呢?
# 错误代码
info = {'name':'Lucy Li', 'sex': 'female'}
if info['age']:
print("Yes")
else:
print("没有年龄信息")
这段代码会正常的输出 : 没有年龄信息 么,答案是并不会,不仅不会,而且还会使你的整个软件崩溃!(当然如果我们处理了异常,就不会导致整个软件崩溃,这里不深入讨论异常处理)
输出如下:
说明报错了,那是因为Python解释器未在 Info 字典中找到 age 关键字,所以就抛出异常。
安全的写法应该是使用字典的 get() 方法:
# 安全代码
info = {'name':'Lucy Li', 'sex': 'female'}
if info.get('age'):
print("Yes")
else:
print("没有年龄信息")
输出:
python 的对象在使用前,需要逐步判断是否空对象。举例如下。
当代码没有差错时:
# python 3
# 代码没有错误时
class Color:
def __init__(self, rgb):
self.rgb = rgb
class Apple:
def __init__(self):
self.color = Color("red") # 当代码一切正常时
apple = Apple()
if apple and apple.color and apple.color.rgb == "red":
print("The apple is red.")
else:
print("Oh shit, what happened? It's impossible.")
运行正常,输出 The apple is red.
当代码有点小意外时:
# 更安全的代码,健壮性更好
# 代码出现小意外
class Color:
def __init__(self, rgb):
self.rgb = rgb
class Apple:
def __init__(self):
self.color = None # 这里出现了点意外,忘了赋值
apple = Apple()
if apple and apple.color and apple.color.rgb == "red":
print("The apple is red.")
else:
print("虽然代码中出现意外,但是程序依然正常运行,一切尽在掌握。")
输出:
不安全的代码:
# 不安全的代码
# 代码出现小意外
class Color:
def __init__(self, rgb):
self.rgb = rgb
class Apple:
def __init__(self):
self.color = None # 这里出现了点意外,忘了赋值
apple = Apple()
if apple.color.rgb == "red": # 程序会在这一行终止
print("The apple is red.")
else:
print("你看不到我,因为这里不会被执行,程序会直接终止")
输出:
Python解释器指出 apple.color 是空类型对象 NoneType object,也即 apple.color 是 None。
a = None
mylist = [a]
if mylist:
print("WTF!")
print("what's in mylist: " + str(mylist))
else:
print("Should be False")
输出:
这说明了啥: None在列表中也算个元素,此时列表并不是空列表。
此时需要使用如下代码过滤掉列表中的None元素:
# 过滤列表中的 None 元素
my_list = [1, 2, 3, None, 5, None, 7, 8]
non_none_list = [x for x in my_list if x is not None]