def函数
# 无参数 def fun1(): print(1, '无参数') fun1() # 带返回值 def fun2(): return 999 print(fun2(), '带返回值') # 有参数 def fun3(a, b): print(a, b, '带参数') fun3(1, 3) # 默认参数 def fun4(a, b=333): print(a, b, '默认参数') fun4(1) # 指定参数 def fun5(a, b): print(a, b, '指定参数') fun5(b=1, a=2) # 动态参数(将多余参数传递到args,转成元祖.键值对形式的,传递到kwargs转成字典.kwargs的实参或形参不能在args的实参或形参之前) def fun6(a1, *args, **kwargs): print(a1, args, kwargs) fun6(1, 2, 3, 4, 5, 6, 7, a=1, b=2, c=3, d=4) lis = [11, 22, 33, 44] dic = { 'aa': 10, 'bb': 20, 'cc': 30 } # 这种直接写变量名,会把lis和dic当成两个元素,在args里生成这两个元素的元祖 fun6("a", lis, dic) # 加上* 和**,就是直接把lis放到args,dic放到kwargs里 fun6('b', *lis, **dic) # args传值示例 l1 = ['hello', '!!!'] s1 = '{0} world {1}' print(s1.format(*l1), 'args') # kwargs传值示例 s2 = '{a1} world {b2}' d1 = {'a1': 'hello', 'b2': '!!!'} print(s2.format(**d1), 'kwargs') # 简单函数lambda表达式 fun7 = lambda x, y=3: x * y print(fun7(15, 10), 'fun7') exit()