标签:
算法
冒泡排序
选择排序
插入排序
一、递归
在函数内调用函数自己称之为递归
应用案例:实现阶乘 1*2*3*4*5*6*7*8*9*10
1 2 3 4 5 6 7 8 9 10 | def func(num): if num == 1: return 1 return num * func(num - 1)x = func(10)print(x)# 输出3628800 |
二、反射
利用字符串的形式去对象(模块)中操作(寻找(getattr)/检查(hasattr)/删除(delattr)/设置(setattr))成员,缩减了代码的编写
1 2 3 4 5 6 7 8 9 10 | func = getattr(commons, "login") # 上commons中寻找成员login,并将成员Login的内容赋值给funcfunc() # 相当于执行成员login内的代码 hasattr(commons, "login") # 返回一个bool值 查看commons中是否存在loginsetattr(commons, "open_file") # 在commons对象中创建成员open_filedelattr(commons, "open_file") # 在commons对象中删除成员open_file |
应用案例:
1 2 3 4 5 6 7 8 9 | # 在模块commons.py中有两个函数用来做登录操作和显示首页操作def login(): print("登录")def home(): print("首页") |
1 2 3 4 5 6 7 8 9 10 11 | # 在index.py中导入commons模块,使用反射根据用户的输入调用相应的方法import commonsinp = input("请输入需要操作的方法:(login/home)")if hasattr(commons, inp): func = getattr(commons, "login") func()else: print("输入错误") |
扩展之导入模块:
1 2 | obj = __import__("commons") # 使用这种方式也可以导入模块,commons为模块名,将commons模块的内容导入,赋值给objobj = __import__("lib.commons", fromlist=True) # 导入多级目录的时候需要设置fromlist=True,如果不设置,则只导入第一层 |
应用场景:
比如获取用户输入,根据用户的输入来决定登录、注册,分别导入不同的函数,然后在配合反射
三、模块
sys
os
re
标签:
原文地址:http://www.cnblogs.com/CongZhang/p/5595651.html