1.函数可以接受参数 def learning(name,course,start,end): print('{}报名{}'.format(name,course)) print('从第{}学习到{}'.format(start,end)) print('{}退出'.format(name)) learning('tom','python',1,3) 2.函数也可以往外传信息 def add_number(x,y): res=x+y return res print(add_number(3,4)) 3.函数的作用范围 x=55#全局函数 def fun(): x=99#函数内 print(x) print('{}全局'.format(x)) print('内部') fun() 4.函数嵌套函数 def func(): x=100#是封装,要调用nonlocal def nested(): x=99 print(x) nested() print(x) func() 5.不可变类型,Int 浮点 str 元组,传递副本给函数,函数内操作不影响原始值 可变类型,列表,字典,传递地址给函数,影响原始值 def change_int(x): x+=10 x=5 print(x) change_int(x) print(x) def change_list(l): l[0]='e' l=['a','w'] print('原始列表',l) change_list(l) print(l) 7.可以定义一个函数接受任意数量的参数 def avg(*scores):#定义一个参数这个参数里面真实的类型是一个元组 return sum(scores)/len(scores)#使用的时候不用加* sorce=(2,33,43) result=avg(*sorce) print(result) 8.**接受字典表,*接受元组 emp={'name':'tom', 'age':20, 'job':'dev'} def display(**employee): print(employee) display(**emp)#要加上**进行解包 9.lambda表达式 f=lambda name:print(name)#定义了一个匿名函数,表明定义了一个函数不给名字,上来就传一个参数 f('tom') 相当于 def hello(name): print(name) 10.若不想进行很多选择,可以用字典表来代替其他语言的switch功能 def hello_chinese(name): print('您好',name) def hello_english(name): print('hello',name) operation={'e':hello_english,#如果带了括号会立马执行此函数,这里把函数作为一个引用传递给当前位置,什么时候执行还不知道 'c':hello_chinese} while True: name=input('请输入姓名:\n') if name=='stop': break language=input('请选择语言版本\n c=>中文版\n e=>英文版') operation.get(language)(name)