如果了解了python代码的简单流程控,那么我们就要开始做一些简单的封装了.
函数
我们先来封装一个打印字典对象的打印函数:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def print_dict(dict_obj):
"""
遍历字典对象
:param dict_obj:字典对象
:return:
"""
# 判断传进来的参数是否是字典类型
if type(dict_obj) == type({}):
# 循环遍历字典对象
for key in dict_obj.keys():
# 打印key:value
print("%s:%s" % (key, dict_obj[key]))
上面这个函数就可以用来打印简单的字典对象了。那么我们来使用一下这个函数:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
if __name__ == '__main__':
person = {"name": "名字", "age": "年龄", "sex": "性别"}
# 打印person对象
print_dict(person)
student = {"name": "Zz", "age": "26", "sex": "男"}
# 打印student
print_dict(student)
根据上面示例,我们再也不用到处写遍历字典的代码了,我们只需要把遍历的固有的逻辑封装在一个函数中,就可以到处使用我们的打印功能。
默认参数
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def pop_list(list_obj, index=-1):
"""
从列表中推出一个元素
:param list_obj:
:param index: 默认是-1
:return: 返回被推出的元素
"""
# 判断是否是列表
if type(list_obj) == type([]):
return list_obj.pop(index)
if __name__ == '__main__':
# 定义一个列表
example = ["hello", "world", "java", "python"]
# 推出一个默认index的元素
print(pop_list(example))
# 输出结果:python
# 推出index为0位置的元素
print(pop_list(example, 0))
# 输出结果:hello
因为默认参数值可传可不传,所以这个参数的位置应该放在最后。
有时候我们写的函数不想被外部使用,为了控制函数的可见性,我们可以把不想被外部调用的函数做一个嵌套:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def get_list(list_obj, index):
"""
通过索引获取列表的值
:param list_obj: 列表对象
:param index: 索引值
:return: 索引值对应的value
"""
def is_list(obj):
"""
判断是否是列表
:param obj: 需要判断的对象
:return:
"""
return type(obj) == type([])
def check_valid(list_obj, index):
"""
检测index是否合法
:param list_obj: 列表对象
:param index: 需要检测的索引值
:return: 是否合法
"""
return -1 < index < len(list_obj)
# 调用上面的函数判断
if is_list(list_obj) and check_valid(list_obj, index):
# 返回对应索引位置的值
return list_obj[index]
if __name__ == '__main__':
example = ["hello", "world", "java", "python"]
# 获取索引值为1的数据
print(get_list(example, 1))
#输出结果:hello
在主函数中,是无法调用is_list和check_valid函数的,因为它们只对get_list函数可见,所以只能由get_list函数调用。我们可以利用这个特性控制函数的调用范围。
以上就是我对函数的一些简单使用,感兴趣的小伙伴可以自己敲一遍。
网友评论