python函数传参和返回值注意事项

函数传参

  • 空参数
    定义函数时括号里面没有形参,调用时不用传参。
def func():
    print('null para.')

# 调用
func()
  • 位置传参
    规定形参的数量,调用时必须传递相同数量的形参。
def func(a, b):
    print(a,b)

# 调用
func(11, 22)
  • 带默认参数的形参
    带默认值的参数位于非默认值参数的后面, 即位于位置参数,可变参数后面。
def func(a, b, c=0):
    print(a, b, c)

# 调用
func(11, 22)
  • 传递元组型可变参数
def f2(a, b, *args):
    print(a)
    print(b)
    print(args)

rest =  f2(10, 20, 30, 40, 50)
print(rest)
执行结果:
10
20
(30, 40, 50)

  • 元组传参传递的另一种方式:
def f2(a, b, *args):
    print(a)
    print(b)
    print(args)

my_tuple = (30, 40, 50)
rest =  f2(10, 20, *my_tuple)
print(rest)
执行结果:
10
20
(30, 40, 50)

除位置参数10, 20以后的数据自动赋值给了元组形参*args
如果只传10,20这2个参数给f2函数也不会报错,此时元组接收的参数为空。
  • 传递字典型可变参数
def f2(a, b, **kwargs):
    print(a)
    print(b)
    print(kwargs)

rest =  f2(10, 20, ka=558, kb='bbb')
print(rest)
执行结果:
10
20
{'ka': 558, 'kb': 'bbb'}
  • 传递字典参数的另一种形式:
def f2(a, b, **kwargs):
    print(a)
    print(b)
    print(kwargs)

kw_para = {'ka': 558,' kb': 'bbb'}

rest =  f2(10, 20, **kw_para)
print(rest)
执行结果:
10
20
{'ka': 558, 'kb': 'bbb'}
  • 位置参数、元组参数、字典参数混合传参
def f2(a, b, *args, **kwargs):
    print(a)
    print(b)
    print(args)
    print(kwargs)

my_kw = {'ka': 558, 'kb': 'bbb'}
my_tuple = (30, 40, 50)
rest =  f2(10, 20, *my_tuple, **my_kw)
print(rest)
结果:
10
20
(30, 40, 50)
{'ka': 558, 'kb': 'bbb'}
按位置参数、元组参数、字典参数的顺序定义函数和调用,位置顺序不能调换!
除非有带默认参数的位置参数,此时带有默认参数的位置参数需要放到元组参数和字典参数之间。
  • 带有默认参数的位置参数、元组参数、字典参数混合传参
def f2(a, *args, b=0, **kwargs):
    print(a)
    print(b)
    print(args)
    print(kwargs)

my_kw = {'ka': 558, 'kb': 'bbb'}
my_tuple = (30, 40, 50)
rest =  f2(10, *my_tuple, **my_kw)
print(rest)
结果:
10
0
(30, 40, 50)
{'ka': 558, 'kb': 'bbb'}

函数返回值

  • 函数执行完不出现return语句,或者return语句不返回值,此时调用者收到的返回值为None。
  • 可以返回一个元组。
def func():
    return 1, 2, 3

x, y, z = func()

  • 返回其他对象等。
原文地址:https://www.cnblogs.com/bryant24/p/11439729.html