python - 函数传参的几种方式

1.位置传参

        实参与形参的位置数量一致

def foo(a,b):  #形参
    print(a)

if __name__ == '__main__':
    foo(1,2)   #实参

2.关键字传参

        关键字传参是指使用形参的名字来确定输入的参数。通过该方式指定实参时,不需要与形参位置一致,只要参数名称写正确即可

def foo(a,b):
    print(f"a是{a},b是{b}")

if __name__ == '__main__':
    foo(b=1,a=2)



#结果
a是2,b是1

3.默认传参

        调用函数时,如果没有指定某个参数将抛出异常,即在定义函数时,直接指定形式参数的默认值。这样,当没有传入参数时,则直接使用定义函数时设置的默认值。语法格式如下:

def foo(a,b,c="我是默认参数"):
    print(f"a是:{a},b是:{b},c是:{c}")

if __name__ == '__main__':
    foo(b=1,a=2)

4.可变参数传参(*args,**kwargs)--也可以叫不定长参数

        1.*args可以接收任意长度的位置参数

        2.**kwargs可以接收任意长度的关键字参数

        3.*args和**kwargs同事使用时,*args(位置参数)在前,**kwargs(关键字)参数在后。

         一、形参为可变参数

def foo(*args, **kwargs):
    print("Positional arguments:")
    print(type(args))

    for arg in args:
        print(arg)

    print("\nKeyword arguments:")
    print(type(kwargs))
    for key, value in kwargs.items():
        print(key + ": " + str(value))


if __name__ == '__main__':
    a = foo(1,2,3,4,5,name = "tom",age = 18)
    help(foo())

        二、实参为可变参数

  

def foo(a,b,name,age):

    print(a,b,name,age)

if __name__ == '__main__':
    a = [1,2]
    b = {"name":"tom","age":18}
    c = foo(*a,**b)


#结果
1 2 tom 18

        

        三、实参和形参都为可变参数

def foo(*args, **kwargs):
    print("Positional arguments:")
    print(type(args))

    for arg in args:
        print(arg)

    print("\nKeyword arguments:")
    print(type(kwargs))
    for key, value in kwargs.items():
        print(key + ": " + str(value))


if __name__ == '__main__':
    a = [1,2,3,4,5]
    b = {"name":"tom","age":18}
    a = foo(*a,**b)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python中,可以通过使用`multiprocessing`模块来创建多进程,并传递参数给进程函数。以下是几种常见的方法: 1. 通过`args`参数传递单个参数: ```python import multiprocessing def process_function(arg1, arg2): # 在这里编写你的进程逻辑 # ... if __name__ == '__main__': arg1 = 10 arg2 = "Hello" process = multiprocessing.Process(target=process_function, args=(arg1, arg2)) process.start() process.join() ``` 在上述示例代码中,我们通过`args`参数将两个参数`arg1`和`arg2`传递给进程函数`process_function`。 2. 通过`kwargs`参数传递命名参数: ```python import multiprocessing def process_function(arg1, arg2): # 在这里编写你的进程逻辑 # ... if __name__ == '__main__': arg1 = 10 arg2 = "Hello" process = multiprocessing.Process(target=process_function, kwargs={'arg1': arg1, 'arg2': arg2}) process.start() process.join() ``` 在上述示例代码中,我们通过`kwargs`参数将两个命名参数`arg1`和`arg2`传递给进程函数`process_function`。 3. 使用全局变量传递参数: ```python import multiprocessing # 定义全局变量 arg1 = 10 arg2 = "Hello" def process_function(): # 在这里编写你的进程逻辑,可以直接访问全局变量arg1和arg2 # ... if __name__ == '__main__': process = multiprocessing.Process(target=process_function) process.start() process.join() ``` 在上述示例代码中,我们将参数`arg1`和`arg2`定义为全局变量,在进程函数中可以直接访问这些全局变量。 需要注意的是,在使用多进程时,参数传递会通过序列化和反序列化进行,因此传递的参数必须是可序列化的类型。如果需要传递复杂的对象或不可序列化的对象,可以考虑使用`multiprocessing.Manager`提供的共享内存对象来进行进程间通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XuMeng_first

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值