0
点赞
收藏
分享

微信扫一扫

基于python-socket构建任务服务器(基于socket发送指令创建、停止任务)

读思意行 2024-02-22 阅读 10

一个函数,至多可以带一个一星参数(收集位置参数),加上一个二星参数(收集关键字参数)。

01 一个星号参数

  1. 入参为不定参数(参数个数不确定),此时在定义参数时,在参数名称前加上*号(表示一个元组)
  2. 带星号的参数可位于参数列表的任意位置,python要求函数只能有一个带星号的参数
def my_sum(*t):
    print(t, type(t))
    sum = 0
    for s in t:
        sum += s
    return sum

# 事实上该函数接受了不定个数的输入参数
my_sum(1, 2, 3, 4, 2233)
  1. 如果带星号的参数后面还有其它参数,则他们必须以关键字的形式传参,否则Python无法分辨实参到底传给谁
def pow_sum(*t, p):
    # 带星号的输入参数被当作元组处理
    print(t, type(t))
    sum = 0
    for s in t:
        sum += s ** p
    return sum

# 最后一个参数p,需要指定关键字传递
pow_sum(1, 2, 3, 4, 2233, p=2)
  1. 如果带星号的参数前面有其它参数,则不必根据关键字传递实参
def sum_test(x1, x2, *y):
    sum = 0
    for i in y:
        sum = sum + i
    return sum + x1 + x2

a = sum_test(1, 2, 3)
b = sum_test(1, 2, 3, 22, 44, 55)
c = sum_test(1, 2, 3, 4, 5, 6)
print(a, b, c)

02 两个星号参数

  1. 二星参数在函数内部以【字典】的形式存在。 – 【Python独有】
  2. 二星参数【必须在参数列表的末尾】,它后面不能再有别的关键字参数和位置参数
def bar(param1, **param2):
    print(param1)
    print(param2)

bar(1, a=2, b=3)  

# 结果: 
1  
{'a': 2, 'b': 3}
举报

相关推荐

0 条评论