函数的介绍
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_inp
def 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
return
def put():
'''
上传功能
'''
pass
return
def get():
'''
下载功能
'''
pass
return
def main():
get()
put()
get()
if __name__ == '__main__':
main()
5.函数的对象
1.函数是第一类对象,即函数可以当作数据传递
1.可以被引用
x=1
y=x
def bar():
print('from bar')
f=bar #函数被引用
f()
2.可以当参数传入
def func(a):
print(a)
def bar():
print('from bar')
def wrapper(func): #func=bar
func() #bar
wrapper(bar)
3.可以当中函数的返回值
x=1
def foo():
return x
res=foo()
print(res)
def bar():
print('from bar')
def foo(func):
return func
f=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,返回值None
def func():
pass
res=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 3
res=func3()
print(res)