这是我参与8月更文挑战的第4天,活动详情查看:8月更文挑战
四、字典
1. 创建和使用
dict = {'Mon' : 1, 'Tue': 2, 'Web': 3}初始化。dict['Tue']读取指定值。
2. 方法
clear():清空原始字典的全部项。copy():返回副本(浅复制)。{}.fromkeys(['name', 'age'], 0):使用键建立字典,值全为 0(第二参数不填则默认为 None)。get('age'):取键值,不存在则返回 None。has_key('sex'):检测是否存在键。items():将字典以列表方式,每项转换为(键,值)形式。keys():将键转换为列表。pop('name'):删除指定键,并返回键值。popitem():随机弹出值,并删除键。setdefault('name', 100):获取值,若键不存在则设定键,值为 100(无第二参数则默认值为 None)。update(dict2):利用一个字典更新原字典(同名者覆盖之)。values():将值转换为列表。
五、其他常用函数
min()求最小值。max()求最大值。len(s)求字符串、列表、元组等长度。list('hi'):返回序列 ['h', 'i']。cmp(a, b):比较两个数,返回 1,0,-1(3.X 版本此函数已移除,可用 operator 模块代替)。del a删除变量 a 的值(移除引用)。exec 'print("Hello world!")':执行语句。eval():求值,同input()pass:什么也不做,充当占位符
1. 条件、循环
if name == 'John':
print(name)
elif(name == 'Boss'):
print("My lord.")
else:
print("None.")
while i < 100:
i += 1
for num in numbers:
print(str(num) + '\n')
- 其他比较运算符
x is y:是否为同一对象(同一引用)。x is not yx in y:成员资格判断运算符。x not in y
2. 迭代工具
names = ['a', 'b', 'c', 'd']
ages = [12, 13, 11, 14]
# range 函数按指定长度生成 0 至 len-1 的序列
for i in range(len(names)):
print(names[i], 'is' ages[i], ' years old.')
# 逗号等价于 + ' ' +
for name, age in zip(names, ages):
print(name, 'is' age, ' years old.')
六、抽象
1. 函数
- 入参支持设置默认值。
*param:单星号,不定数量参数。**dict:双星号,传递元组或字典。
2. 类
- 每个函数第一个参数 self 表示当前对象,类似于 Java 的 this。
- 类名后带有括号,表示当前类继承了括号中的类,多个父类用逗号分割。
- 判断实例对象是否为目标类:isinstance(object, Class)。
- 判断类继承关系:issubclass(child, parent)。
__metaclass__ = type
class Person(Animal):
def __init__(self):
print("init.")
def setName(self, name):
self.name = name
def getName(self):
return self.name
def greet():
print("Hello , I'm %s." % self.name)
man = Person()
man.greet() # 等价于 Person.greet(man)
- 类属性定义
- __ 以双下划线开头的为 private 属性。
- _ 以单下划线开头的为 protected 属性。
- 不以下划线开头的为 public 属性。
- 其他重载方法有:
- del(self):析构函数
- repr(self):转成供解释器读取的形式
- str(self):序列化
- cmp(self):对象对比