标签:
算法
冒泡排序
选择排序
插入排序
一、递归
在函数内调用函数自己称之为递归
应用案例:实现阶乘 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的内容赋值给func func() # 相当于执行成员login内的代码 hasattr (commons, "login" ) # 返回一个bool值 查看commons中是否存在login setattr (commons, "open_file" ) # 在commons对象中创建成员open_file delattr (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 commons inp = input( "请输入需要操作的方法:(login/home)" ) if hasattr(commons, inp): func = getattr(commons, "login" ) func() else : print( "输入错误" ) |
扩展之导入模块:
1 2 | obj = __import__ ( "commons" ) # 使用这种方式也可以导入模块,commons为模块名,将commons模块的内容导入,赋值给obj obj = __import__ ( "lib.commons" , fromlist = True ) # 导入多级目录的时候需要设置fromlist=True,如果不设置,则只导入第一层 |
应用场景:
比如获取用户输入,根据用户的输入来决定登录、注册,分别导入不同的函数,然后在配合反射
三、模块
sys
os
re
标签:
原文地址:http://www.cnblogs.com/CongZhang/p/5595651.html