推导式
先看一个比较简单的
求输出1-100中的偶数 这是正常情况下的代码:
result = []
for i in range(1, 101):
if i % 2 == 0:
result.append(i)
print(result)
下面看一下推导式的代码:
print([i for i in range(1, 101) if i % 2 == 0])
再看第二个需求,将 “键1 = 值1;键2 = 值2;键3 = 值3…” 转换为 {键1:值1;键2:值2;…}
这是正常情况下的代码:
cookie = "A=123;B=2;C=3;D=4;E=5"
new_cookie = {}
for item in cookie.split(";"):
s = item.split("=")
new_cookie[s[0]] = s[1]
print(new_cookie)
输出结果为: 下面看一下推导式的代码:
print({item.split('=')[0]:item.split('=')[1] for item in cookie.split(';')})
私有变量
和在JAVA中的private/protected/public差不多
先介绍一下private
class A(object):
def __init__(self):
self.__z = 2
def __some_method(self):
print("私有")
在其他地方是不能使用这个私有属性和私有方法的
再看看protected
_a = 10
b = 20
在其他模块中引用 from class_name import * 时 _a被自动忽略 但是可以from class_name import _a 强制引用
自省
汉语解释:自我反省 Python的自省:Python运行的时候知道对象自身有哪些东西
class Person(object):
name = "玩意"
print(dir(Person))
print(hasattr(Person, "name"))
使用场景举例: 一个函数中实现“检查函数参数”(类型检查,整数检查等)
def f(i):
if not isinstance(i, int):
print(f'{i}不是整数')
else:
print(f'{i}是整数')
if __name__ == '__main__':
f(1)
f(1.2)
f(1.5)
f(2)
输出结果: 常用的自省有:
dir()
hasattr()
type()
isinstance()
id()
callable()
help()
getattr()
setattr()
|