Python 传参方式,这六个方法要掌握

任何编程语言函数都是非常重要的一部分,而在进行函数调用时,了解函数的参数传递方式是非常有必要的。Python中支持哪些传参方式呢?

Python中的传参方式是比较灵活的,主要包括以下六种:

  • 按照位置传参

  • 按照关键字传参

  • 默认参数

  • 元组传参

  • 字典传参

  • 综合传参

按照位置传参

顾名思义,实参与形参数目一致,并且是按照位置一一对应的。

def func(a, b):  
    return a+b*2

当调用函数func(1,2)时,则按照a=1,b=2的方式形参与实参对应,返回结果为5。

按照关键字传参

这种方式在调用函数时既传实参,也传形参。因而,不需要根据位置对应了,位置可以颠倒:

def func(a, b):  
    return a+b*2

当调用函数func(b=1,a=2)时,则按照b=1,a=2的方式形参与实参对应,匹配的方式是关键字而非位置,返回结果为4。

默认参数

默认参数必须放在前两类参数之后,在调用函数的时候可以传参,也可以不传。不传则采用默认的参数值。

def func(a, b, c = 3):  
    return a+b*2+c

其中,c为默认参数。当通过func(1,2)调用函数时,c的取值为默认值3,函数的执行结果为8;当通过func(1,2,5)调用函数时,c的取值为实参值5,函数的执行结果为10。

元组传参

传入的参数以元组的形式呈现,长度不限,可以通过元组的访问方式依次访问各个入参:

def func(*args):  
    for eacharg in args:  
        print ('tuple arg:', eacharg)

调用方式如下:func(‘I’, ‘Love’, ‘PythonSomething’)

调用结果为:

tuple arg: I  
tuple arg: Love  
tuple arg: PythonSomething

字典传参

传入的参数以字典的形式呈现,长度不限,可以通过字典的访问方式依次访问各个入参:

def func(**kwargs):  
    for eachkwarg in kwargs.keys():  
        print('Dict Arg', eachkwarg, ':', kwargs[eachkwarg])

调用方式如下:

func(English_name = ‘PythonSomething’, Chinese_name= ‘Python那事’)

调用结果为:

Dict Arg English_name : PythonSomething  
Dict Arg Chinese_name : Python那事

综合传参

是以上几种传参方式的综合。实际上,大家从上面的例子也可以发现,元组传参和字典传参已经能够满足大部分传参场景。所以,通常所的综合传参指的是这两种的组合,大家在源码中也经常会发现它们的身影:

def func(*args,**kwargs):  
    for eacharg in args:  
        print('tuple arg:', eacharg)  
  
    for eachkwarg in kwargs.keys():  
        print('Dict Arg', eachkwarg, ':', kwargs[eachkwarg])

调用示例为:

func(‘I’, ‘Love’, ‘PythonSomething’, English_name = ‘PythonSomething’, Chinese_name= ‘Python那事’)

调用结果为:

tuple arg: I  
tuple arg: Love  
tuple arg: PythonSomething  
Dict Arg Chinese_name : Python那事  
Dict Arg English_name : PythonSomething
### 如何在Python中定义带参数的类并进行实例化 在Python中,可以通过`__init__()`方法来实现带有参数的类定义和实例化。以下是详细的解释: #### 定义带参数的类 当定义一个类时,如果希望在创建实例时参数,则可以在类内部定义一个特殊的初始化方法——`__init__()`[^3]。此方法会在每次创建新实例时被自动调用。 - `__init__()`方法的第一个参数始终是`self`,表示当前正在创建的对象实例。 - 额外的参数则由开发者自行决定,并通过这些参数为对象设置初始状态。 下面是一个简单的例子展示如何定义带参数的类: ```python class MyClass: def __init__(self, param1, param2): self.attribute1 = param1 # 将param1赋值给实例变量attribute1 self.attribute2 = param2 # 将param2赋值给实例变量attribute2 ``` #### 实例化带参数的类 为了创建此类的一个实例,需要向其构造器提供所需的参数。这类似于调用函数时入实参的过程。 以下是如何实例化的示例代码: ```python obj_instance = MyClass("value1", "value2") # 创建MyClass的一个实例 print(obj_instance.attribute1) # 输出: value1 print(obj_instance.attribute2) # 输出: value2 ``` 在这个过程中,`"value1"`和`"value2"`作为实际参数分别对应于形式参数`param1`和`param2`,并通过`__init__()`方法分配给了新的实例属性。 需要注意的是,虽然约定俗成地使用`self`作为实例自身的引用名,但实际上这个名字是可以更改的;不过强烈建议遵循这一惯例以保持代码可读性和一致性[^1]。 另外值得注意的一点在于,即使我们自定义了接收额外输入的形式参数列表,在背后机制上仍需保留首个隐含的位置专门留给代表自身实体的那个特殊标记—即所谓的'self'关键字所指代的内容[^2]。 综上所述,理解并掌握好`__init__()`的作用及其参数结构对于正确构建具有特定行为特性的复杂数据模型至关重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值