python中的函数(细节)

def test(x):
    '''
    2*x+1
    :param x:整形数字
    :return: 返回计算结果
    '''
    y=2*x+1
    return y
print(test(2))

输出  5

过程:就是没有返回值的函数
def test01():
    msg = 'test01'
    print(msg)
test01()

输出

test01
def test02():
    msg = 'test02'
    print(msg)
    return 'sg'
test02()
print(test02())

输出

test02
test02
sg
def test03():
    msg = 'test03'
    print(msg)
    return 1,2,3,4,'a',['alex'],{'name':'alex'},None
print(test03())

输出

test03
(1, 2, 3, 4, 'a', ['alex'], {'name': 'alex'}, None)
def test04():
    msg = 'test03'
    print(msg)
    return {'name':'alex'}

print(test04())

输出

test03
{'name': 'alex'}
def test(x,y,z):#x=1,y=2,z=3
    print(x)
    print(y)
    print(z)
    
p=test(1,2,3)
print(p)
#位置参数,必须一一对应,缺一不行多一也不行
输出
1
2
3
None
def test(x,y,z):#x=1,y=2,z=3
    print(x)
    print(y)
    print(z)
test(y=1,x=3,z=4)
#关键字参数,无须一一对应,缺一不行多一也不行

输出

3
1
4
def test(x,y,z):#x=1,y=2,z=3
    print(x)
    print(y)
    print(z)
#位置参数必须在关键字参数左边
test(1,y=2,3)#报错
test(1,3,y=2)#报错
test(1,3,z=2)
test(1,3,z=2,y=4)#报错
test(z=2,1,3)#报错

 

def handle(x,type='mysql'):
    print(x)
    print(type)
handle('hello')
handle('hello',type='sqlite')
handle('hello','sqlite')
hello
mysql
None
hello
sqlite
None
hello
sqlite
None
#参数组:**字典 *元组
def test(x,*args):
    print(x)
    print(args)
test(1)
test(1,2,3,4,5)
test(1,{'name':'alex'})
test(1,['x','y','z'])
test(1,*['x','y','z'])
test(1,*('x','y','z'))

输出

1
()
1
(2, 3, 4, 5)
1
({'name': 'alex'},)
1
(['x', 'y', 'z'],)
1
('x', 'y', 'z')
1
('x', 'y', 'z')
#参数组:**字典 *列表
def test(x,**kwargs):
    print(x)
    print(kwargs)
test(1,y=2,z=3)
# test(1,1,2,2,2,2,2,y=2,z=3)  报错
# test(1,y=2,z=3,z=3)#会报错 :一个参数不能传两个值

输出

1
{'y': 2, 'z': 3}
def test(x,*args,**kwargs):
    print(x)
    print(args,args[-1])
    print(kwargs,kwargs.get('y'))
# test(1,1,2,1,1,11,1,x=1,y=2,z=3) #报错
test(1,1,2,1,1,11,1,y=2,z=3)

输出

1
(1, 2, 1, 1, 11, 1) 1
{'y': 2, 'z': 3} 2

 

posted @ 2019-01-16 18:31  流水众生  阅读(237)  评论(0编辑  收藏  举报