函数的使用、局部变量、局部作用域、高阶函数、递归
# 函数的基本使用def fun1(): '''函数描述''' print('----------1-----------') print('You are running function 1.') return 1def fun2(): """并不是函数,而是过程""" print('----------2-----------') print('This is has no return value')x = fun1()y = fun2()print(x)print(y)def fun3(a, b): """求和函数""" print('----------3-----------') return a + bprint(fun3(1,2))def fun4(a, b = 0): """带有默认参数""" print('----------4-----------') return a - bprint(fun4(4)) # 可以不输入,此时调用默认参数值print(fun4(6, 1)) # 也可以指定别的值def fun5(*args): # 接收位置参数——>转换成元组 """加一个 * 来接收未知数量的实参 还可以将形参设置为(x, *args)""" print('----------5-----------') print(args) # 以元组的形式输出 print(*args) # 以分立的元素输出 return 0fun5(1,2,3,4,'六',['seven', 'eight'])def fun6(**kwargs): # 关键参数——>字典 """将N个关键参数转化为字典""" print('----------6-----------') print(kwargs) print(kwargs['name']) print(kwargs['age']) print(kwargs['sex']) return 0fun6(name='Lief', age=20, sex='M')def fun7(name, age, sex = 'M', **kwargs): """实现必须输入姓名年龄,性别设置了默认值邮箱非必填""" print('----------7-----------') print(name) print(age) print(sex) print(kwargs['mail']) return 0fun7('Lief', age=20, sex='F', mail='lingfenglee@qq.com')def fun8(name, age, *args, **kwargs): """位置参数和关键参数混合使用""" print('----------8-----------') print(name) print(age) print(args) print(kwargs) return 0fun8('Lief', 20, sex='F', mail='lingfenglee@qq.com')fun8('Lingfeng', 22, 'WTF', sex='M', mail='lingfenglee@qq.com')----------------------------------------------------------------------------------------------------------# 局部变量、全局变量name = 'Lief'def change_name(name): """局部变量name改不了Lief""" name = 'Lee' print(name) return 0change_name(name)print(name)table = [1, 2, 3, 4]def change_table(table): """可以改全局变量""" table[2] = 99 print(table) return 0change_table(table)print(table)dictionary = { 'Name': 'Lief','Age': '20','School': 'TJU' }def change_dic(dictionary): """可以改全局变量""" dictionary['Name']='Lee' print(dictionary) return 0change_dic(dictionary)print(dictionary)----------------------------------------------------------------------------------------------------------# 局部作用域|全局作用域x = 0def grandpa(): x = 1 def father(): x = 2 def son(): x = 3 print(x) son() father()grandpa()print(x)----------------------------------------------------------------------------------------------------------# 高阶函数# 1.把一个函数名当作实参传给另外一个函数# 2.返回值中包含函数名def add(a, b, f): return f(a)+f(b)res = add(8, -9, abs) # abs是内置函数,用于求绝对值print(res)----------------------------------------------------------------------------------------------------------# 递归def calc(n): if n < 10: return calc(n+1) print(n)calc(1)