函数复习

1、语法
def 函数名(参数1,参数2,...):
"""
文档描述
"""
代码1
代码2
代码3
return 值

def:定义函数的关键字
函数名:是用来调用函数的,
函数名的命名必须能反映出函数的功能
文档描述:推荐写上,来增强函数的可读性
代码块:函数的功能实现代码
return:函数的返回值
2 调用阶段:函数名加括号就是在调用函数

定义义函数的三种类型:
有参函数:参数是函数体代码用来接收外部传入值的
无参函数:当函数体的代码逻辑不需要函数的调用者掺入值的情况下,就无参
空函数:函数体为pass
def auth():
"""
这是一个认证功能
:return:
"""
pass

def put():
"""
上传功能
:return:
"""
pass

def get():
"""
下在功能
:return:
"""
pass


def ls():
"""
list contents
:return:
"""
pass

#函数的使用必须遵循:先定义,后调用的原则
#注意:没事先定义函数而直接调用,就相当于在引用一个不存在的变量名

#定义阶段:在定义阶段只检测语法,不执行函数体代码
#调用阶段:根据函数名找到函数的内存地址,然后执行函数体代码


调用函数的三种形式
#1、
# def func():
# print('from func')
#
# func()


#2、
# def max2(x,y):
# if x > y:
# return x
# else:
# return y
#
# res=max2(10,3)
# print(res)

#3、

def max2(x,y):
if x > y:
return x
else:
return y

# res=max2(10,3)*100
# print(res)

#4、

res=max2(max2(10,3),11)
print(res)

#什么时候应该有返回值:
#函数体代码运行完毕后需要有一个返回结果给调用者

#返回值有三种形式:

#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)


# return注意点:
#1、return返回值的值,没有类型限制
#2、return是函数结束的标志,函数内可以写多个return,但
#执行一次,函数就立刻结束,并把return后的值作为本次调用的返回值

三级菜单
menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'网易':{},
'google':{}
},
'中关村':{
'爱奇艺':{},
'汽车之家':{},
'youku':{},
},
'上地':{
'百度':{},
},
},
'昌平':{
'沙河':{
'老男孩':{},
'北航':{},
},
'天通苑':{},
'回龙观':{},
},
'朝阳':{},
'东城':{},
},
'上海':{
'闵行':{
"人民广场":{
'炸鸡店':{}
}
},
'闸北':{
'火车战':{
'携程':{}
}
},
'浦东':{},
},
'山东':{},
}

# 方法一:
# tag=True
# while tag:
# menu1=menu
# for key in menu1:
# print(key)
#
# choice1=input('第一层>>: ').strip() # choice1='asdfkhsadjkfhsakdfja'
# if choice1 == 'b':break
# if choice1 == 'q':
# tag = False
# break
# if choice1 not in menu1:continue
#
# while tag:
# menu2=menu1[choice1] #menu1['北京']
# for key in menu2:
# print(key)
#
# choice2 = input('第二层>>: ').strip()
# if choice2 == 'b':break
# if choice2 == 'q':
# tag=False
# break
# if choice2 not in menu2:continue
#
# while tag:
# menu3 = menu2[choice2] #
# for key in menu3:
# print(key)
#
# choice3 = input('第三层>>: ').strip() # choice3='五道口'
# if choice3 == 'b':break
# if choice3 == 'q':
# tag=False
# break
# if choice3 not in menu3: continue
#
# while tag:
# menu4 = menu3[choice3] #
# for key in menu4:
# print(key)
#
# choice4 = input('第四层>>: ').strip() # choice1='北京'
# if choice4 == 'b':break
# if choice4 == 'q':
# tag=False
# break
#
# if choice4 not in menu4: continue

#方法二:


#逻辑分析:
#1、拿到当前层的菜单字典
#2、循环打印字典的key
#3、接收用户输入
#4、进入下一层,需要先拿到下一次层的字典

layers=[menu,]
while True:
if len(layers) == 0:break
# 1、拿到当前层的菜单字典
current_layer=layers[-1]
# 2、循环打印字典的key
for key in current_layer:
print(key)
# 3、接收用户输入
choice=input('>>: ').strip()
if choice == 'q':break
if choice == 'b':
layers.pop(-1)
continue
if choice not in current_layer:continue
# 4、进入下一层,需要先拿到下一次层的字典
layers.append(current_layer[choice])

原文地址:https://www.cnblogs.com/maojiang/p/8689240.html