python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python函数参数类型

Python函数参数类型及传参方式详解

作者:思则变

Python函数参数主要分为位置参数、关键字参数、默认参数、可变参数和仅关键字参数,参数传递方式包括位置传递、关键字传递和默认传递,理解参数传递机制对于编写正确的函数至关重要,本文介绍Python函数参数类型及传参方式,感兴趣的朋友一起看看吧

Python函数参数类型

Python函数参数主要分为以下几种类型:

位置参数(Positional Arguments)

def foo(name,age):
    """
    位置参数,按位置对应来传递参数
    """
    print(f"第一个参数:{name},第二个参数{age}")
# test code
foo("Alice", 18)
foo(18, "Alice")
第一个参数:Alice,第二个参数18
第一个参数:18,第二个参数Alice

当传入的两个参数位置调换之后,输出结果也会调换。所以位置参数必须严格按照对应位置来传递。

关键字参数(Keyword Arguments)

def foo(name, age):
    """
    关键字参数,根据指定的关键字传递参数,与参数的位置不相关
    :return:
    """
    print(f"第一个参数:{name},第二个参数{age}")
# test code
foo(name="Alice", age=18)
foo(age=18, name="Alice")
第一个参数:Alice,第二个参数18
第一个参数:Alice,第二个参数18

可以看到两种不同位置的传参,输出都是同一个结果。

默认参数(Default Arguments)

def foo(name="Dog", age=12):
    """
    关键字参数,根据指定的关键字传递参数,与参数的位置不相关
    :return:
    """
    print(f"第一个参数:{name},第二个参数{age}")
# test code
foo()
foo(name="Alice", age=18)
第一个参数:Dog,第二个参数12
第一个参数:Alice,第二个参数18

可变参数(Variable-length Arguments)

def foo(*args, **kwargs):
    for arg in args:
        print(f"其他非关键参数有:{arg}")
    for kwarg in kwargs.keys():
        print(f"其他关键子参数有:{kwargs[kwarg]}")

多种参数(包括位置参数,默认参数,关键字参数,可变参数)

多种参数一起传递,对传递顺序是有要求的,一般是位置参数、关键字参数、默认参数、可变参数。总体来说可变参数都是放在所有参数后面的

def foo(arg1, arg2, arg3="some", *args, **kwargs):
    print(f"位置参数arg1 is {arg1}\n位置参数arg2 is {arg2}")
    print(f"默认参数arg3 is {arg3}")
    for arg in args:
        print(f"其他非关键参数有:{arg}")
    for kwarg in kwargs.keys():
        print(f"其他关键子参数有:{kwargs[kwarg]}")
# test code
# foo("Alice", 18)
# foo("Alice", 18, "Bob", "Elson", 19)
# foo("Alice", 18, "Bob", "Elson", 19, a="123", b=789)
foo("Alice", 18, "Elson",19, a="123", b=789,)
位置参数arg1 is Alice
位置参数arg2 is 18
默认参数arg3 is Elson
其他非关键参数有:19
其他关键子参数有:123
其他关键子参数有:789

仅关键字参数(Keyword-only Arguments)

def concat(*args, sep=" "):
    return sep.join(args)
print(concat("a", "b", "c", sep="-"))  # 必须使用关键字传递sep

Python参数传递方法

Python中的参数传递本质上是对象引用的传递。对于可变和不可变对象有不同的表现:

不可变对象传递

def modify_num(x):
    x = x + 1
    print("Inside:", x)
num = 10
modify_num(num)  # Inside: 11
print("Outside:", num)  # Outside: 10

可变对象传递

def modify_list(lst):
    lst.append(4)
    print("Inside:", lst)
my_list = [1, 2, 3]
modify_list(my_list)  # Inside: [1, 2, 3, 4]
print("Outside:", my_list)  # Outside: [1, 2, 3, 4]

理解Python的参数传递机制对于编写正确的函数至关重要。根据需求选择合适的参数类型和传递方式,可以使代码更清晰、更安全。

到此这篇关于Python函数参数类型以及传参方式的文章就介绍到这了,更多相关python函数参数类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文