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

  

posted @ 2017-03-12 18:03  破斧呈粥  阅读(566)  评论(0编辑  收藏  举报