# dog1 = { # 'name': '林海峰', # 'gender': '公', # 'type': 'dog', # } # # dog2 = { # 'name': '元昊', # 'gender': '公', # 'type': 'dog', # } # # person1 = { # 'name': 'mike', # 'gender': 'man', # 'type': '人', # } # # def jiao(dog): # if dog['type'] == 'dog': # print('一条[%s]狗狗正在汪汪汪的叫唤!' % dog['name']) # # def run(dog): # if dog['type'] == 'dog': # print('一条[%s]狗狗正在用四条腿使劲的奔跑!' % dog['type']) # # jiao(dog1) # run(dog1) # jiao(dog2) # run(dog2) # jiao(person1) # 人的介绍也可以直接调用狗定义的函数方法,防止这样的现象可以在每个函数里加上判断,但这样已经是在写重复的代码了 # def dog(): # '''把狗的函数方法及狗的介绍都放在一个函数里,但此时狗的介绍已经写死了''' # def jiao(dog): # print('一条[%s]狗狗正在汪汪汪的叫唤!' % dog['name']) # # def run(dog): # print('一条[%s]狗狗正在用四条腿使劲的奔跑!' % dog['type']) # # dog1 = { # 'name': '林海峰', # 'gender': '公', # 'type': '哈士奇', # 'shuxing': 'dog', # 'jiao': jiao, # 'run': run, # } # # return dog1 # # d1 = dog() # print(d1) # d1['jiao'](d1) # d1['run'](d1) def dog(dog_l): '''dog函数接收一个狗介绍字典,然后加一个函数为接收的狗介绍字典加上两个键值对,分别对应两个狗函数方法''' def jiao(dog): print('一条[%s]狗狗正在汪汪汪的叫唤!' % dog['name']) def run(dog): print('一条[%s]狗狗正在用四条腿使劲的奔跑!' % dog['type']) def dog_name(): dog_l['jiao'] = jiao dog_l['run'] = run return dog_l return dog_name() d2 = dog({ 'name': '林海峰', 'gender': '公', 'type': '哈士奇', 'shuxing': 'dog', }) print(d2) d2['jiao'](d2) d2['run'](d2)