函数的介绍1.什么是函数:为什么要有函数答:(1)组织代码结构不清晰 可读性差 (2) 代码冗余 (3) 管理维护的难度很大 扩展性 (4) 在具备某一个功能的工具就是程序中的函数 事先准备工具的过程-->函数的定义 --> 拿来就用 --> 函数的调用 (5) 函数的执行过程必须遵循:先定义 在调用2.函数的定义def 函数名(参数1,参数2,...): ''' 文档注释 ''' pass --> 代码块 return 值##3.定义阶段def print_sym(sym,count):##代码块 print(sym*count) ##调用阶段print(print_sym) ##打印函数内存地址print_sym('#',30) ##传参def print_msg(msg): print('\033[046m %s\033[0m' %msg)print_msg('hello world')#4.定义函数的三种类型:1.有参数函数: 参数是函数体代码接收外部传入的值def max2(x,y): x=10 y=3 if x > y: print(x) else: print(y)max2(100,101)#2.无参函数: 当函数体的代码逻辑不需要函数的调用者传入值的情况下 就无参def interactive(): name=input('username>>:').strip() pwd=input('password>>').strip() print(name,pwd)interactive() #定义时无参 意味着调用时也无须传入参数登录程序username_of_db='zhang'pwd_of_db='123'def interactice(): username_of_inp=input('username:').strip() pwd_of_inp=input('password:').strip() return username_of_inp,pwd_of_inpdef auth(uname,pwd): if uname == username_of_db and pwd == pwd_of_db: print('登录成功') else: print('登录失败')res=interactive()auth(res[0],res[1])写一个函数的方式def auth(): ''' 注释:这是一个认证功能 ''' pass returndef put(): ''' 上传功能 ''' pass returndef get(): ''' 下载功能 ''' pass returndef main(): get() put() get()if __name__ == '__main__': main()5.函数的对象1.函数是第一类对象,即函数可以当作数据传递 1.可以被引用x=1y=xdef bar(): print('from bar')f=bar #函数被引用f()2.可以当参数传入def func(a): print(a)def bar(): print('from bar')def wrapper(func): #func=bar func() #barwrapper(bar)3.可以当中函数的返回值x=1def foo(): return xres=foo()print(res)def bar(): print('from bar')def foo(func): return funcf=foo(bar)print(f) #打印函数的内存地址f()4.可以当容器类型的元素def get(): print('from get')def put(): print('form put')l=[get,put]print(l)A=l[0]()#例子1:def auth(): print('登录.....')def reigster(): print('注册.....')def search(): print('查看.....')def transfer(): print('转账.....')dic={ '1':auth, '2':reigster, '3':search, '4':transfer,}# print(dic) #打印所有的函数内存地址# print(dic['2']) #拿到函数reigster的内存地址dic['2']() #运行函数 拿到返回值def interactive(): while True: print(''' 1 认证 2 注册 3 查看 4 转账 ''') choice=input('>>>').strip() if choice in dic: dic[choice]() else: print('非法操作')interactive()l=[auth,reigster,search,interactive]print(l)a=l[l]()
函数的返回值什么是函数的返回值函数体代码运行完毕后需要一个返回结果给调用者 返回值的三种形式1.没有return,返回值Nonedef func(): passres=func()print(res)2.return后跟一个值 返回值的本身def func1(): return 1 res=func1()print(res)3.return可以逗号分隔 返回多个值 会返回一个元祖给调用者def func2(): return 1,2,[1,2,3]res=func2()print(res)4 return注意点:return 返回的值 没有类型限制函数内可以写多个return 执行过一次 函数就立刻结束 并把return后的值作为本次调用的返回值def func3(): print('first') return 1 print('second') return 2 print('third') return 3res=func3()print(res)