欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-20 21:16:47
函数传参 空参数 定义函数时括号里面没有形参,调用时不用传参。 位置传参 规定形参的数量,调用时必须传递相同数量的形参。 带默认参数的形参 带默认值的参数位于非默认值参数的后面, 即位于位置参数,可变参数后面。 传递元组型可变参数 元组传参传递的另一种方式: 传递字典型可变参数 传递字典参数的另一种 ......

函数传参

  • 空参数
    定义函数时括号里面没有形参,调用时不用传参。
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()
  • 返回其他对象等。