day11.1函数进阶 列表集合 字典中的函数变量,函数作为形参

函数进阶

1.函数作为变量

a=123
name="gao"
nums=[1,2,3]
data=nums#指向同一个内存地址
#查看内存地址篇章

def func():
 print(123)
func()

1.1函数名作为变量名使用

def func():
  print("nice")
  
v1=func#v1指向func函数的内存地址
v1()#执行内存中存放的代码
func()

1.2函数的默认返回值

def func():
  print("nice")
  
v2=func()#函数执行  打印nice
print(v2)
#nice
#None  func()函数中没有返回值 则默认返回None

1.3列表中的函数变量

def func():
  print("nice")
  num=[1,2,3]
  num.append(4)
  print(num)
 
#func_list=[func,func,func]
#func_list[0]()#执行 nice 4
#func_list[1]()#执行 nice 4 
#不是[1,2,3,4,4]因为每次都重新赋值了

for item in func_list:
  v=item()#nice [1,2,3,4]
  #执行列表中的函数 执行print语句
  print(v)#None
  #因为item函数中没有返回值  所以默认返回None

1.4字典中的函数变量

def func():
  print(123)
def bar():
  print(666)
  
info={'k1':func,'k2':bar}
info['k1']()#123
inf['k2']()#666

  
  
易混淆:
def func():
  return 123
func_list1=[func,func,func]
func_list2=[func(),func(),func()]
print(func_list1)#函数地址
print(func_list2)#返回值
#[<function func at 0x10f330e18>, <function func at 0x10f330e18>, <function func at 0x10f330e18>]
#[123, 123, 123]

info={
  'k1':func,
  'k2':func()
}
print(info)
#{'k1': <function func at 0x1079b4e18>, 'k2': 123}

1.5集合中的函数:[不重复性 ]

def func():
  print(123)
se={func,func,func,8,"a"}#会被去重
print(se)
# {8, <function func at 0x1096a1e18>, 'a'}
#不重复性给三个函数去重成一个

1.6函数作为参数

def func(arg):
  print(arg)
func(1)
func([1,2,3,4])

def show():
  print("aa")
  
func(show)#打印show函数的地址
#<function show at 0x10ad927b8>
def func(arg):
  v1=arg()#将传入的函数执行---> aa
  print(v1)#None

def show():
  print("aa")
  
func(show)#
#func()执行 --> 内部arg()执行就是-->show()执行-->
#-->show执行完后返回值给v1-->执行print(v1)
def func(arg):
  v1=arg()
  print(v1)
  
def show():
  print(666)
  
result=func(show)
print(result)
#① 首先func()执行
#② func()内执行show()函数 print(666)
#③ show()的默认返回值None给v1 = None 
#④ print(v1)
#⑤ func()默认返回值None给result
#⑥print(result)
练习:

10086 的十个函数 , 每个函数都有对应的功能 ,用户输入某个值就执行某个函数

# 字典
# 函数放在字典中
def show():
    print("语音")


def voice():
    print("修改流量套餐")


def bar():
    print("话费充值")


def test():
    print("其他")


def logout():
    print("退出")


info = {
    "f1": show,
    "f2": voice,
    "f3": bar,
    "f4": test,
    "f5": logout
}

while True:
    choice = input("请用户输入:")
    if choice in info:
        if choice == 'f5':
            break
        info[choice]()
    else:
        print("输入错误")

猜你喜欢

转载自www.cnblogs.com/koukouku/p/10692054.html
今日推荐