欢迎访问宙启技术站
智能推送

python函数中的参数传递方式有哪些?

发布时间:2023-12-03 20:50:17

在Python中,函数参数的传递方式包括以下几种:

1. 位置参数传递(Positional Arguments):

这是最常见的参数传递方式。当我们在函数调用时,传递的参数和函数定义的参数按照位置一一对应。被调用函数中的参数按照函数定义时的顺序接收传递进来的值。

例如:

   def add(a, b):
       return a + b

   sum = add(2, 3) # a = 2, b = 3
   

2. 默认参数传递(Default Arguments):

默认参数指的是在函数定义时就为参数指定了默认值,如果函数在调用时没有传递该参数,则会使用默认值。

例如:

   def power(x, n=2): # 默认为2次方
       return x ** n

   res = power(2) # x = 2, n = 2
   res = power(2, 3) # x = 2, n = 3
   

在默认参数传递中,需要注意的是默认参数的值只会在函数定义的时候进行求值,而不是在每次函数调用的时候求值。这意味着如果默认参数是一个可变对象(如列表、字典等),则在多次调用同一个函数时,对默认参数对象的修改会被保留下来。

3. 关键字参数传递(Keyword Arguments):

通过指定参数名和对应的值进行传递。通过使用关键字参数,可以在函数调用时直接指定参数的值,而无需按照位置依次传递。

例如:

   def greet(name, age):
       print("Hello", name, "you are", age, "years old.")

   greet(age=25, name="John") # name = "John", age = 25
   

使用关键字参数传递参数时,参数的顺序可以是任意的。

4. 可变参数传递:

可变参数允许函数接收任意数量的参数。在函数定义时,使用"*"表示参数为可变参数。

a) 位置可变参数(Positional Variable Arguments):

这种可变参数形式允许函数接收任意数量的位置参数。在函数定义时,使用"*args"来表示位置可变参数。

例如:

      def sum(*args):
          total = 0
          for num in args:
              total += num
          return total

      result = sum(1, 2, 3, 4, 5) # args = (1, 2, 3, 4, 5)
      

b) 关键字可变参数(Keyword Variable Arguments):

这种可变参数形式允许函数接收任意数量的关键字参数。在函数定义时,使用"**kwargs"来表示关键字可变参数。

例如:

      def print_info(**kwargs):
          for key, value in kwargs.items():
              print(key, value)

      print_info(name="John", age=25) # kwargs = {"name": "John", "age": 25}
      

在使用可变参数时,需要注意的是,位置可变参数和关键字可变参数可以与其他参数同时存在,但是位置可变参数必须位于关键字可变参数之前。

5. 引用传递:

在Python中,函数参数是通过引用来传递的。也就是说,函数接收的参数是原参数的引用,而不是值的拷贝。因此,在函数中可以对参数进行修改,并且修改后的值会影响到原参数。

例如:

   def change_list(lst):
       lst.append(4)

   nums = [1, 2, 3]
   change_list(nums)
   print(nums) # [1, 2, 3, 4]
   

在上面的例子中,通过引用传递的方式,原列表nums在函数中被修改并添加了一个元素。

以上是Python函数中常用的参数传递方式,通过不同的参数传递方式可以灵活地在函数调用时传递参数,并根据需求进行相应的处理。