Python中*与**的区别

*与**的区别

*用途一:乘法#

  • 可用于数学计算
  • 字符串,列表的重复
key="a"*5
print(key) #aaaaa

word=[2,"3"]*4
print(word) #[2, '3', 2, '3', 2, '3', 2, '3']

*用途二:接受多个参数#

*用作方法的形参,在接收参数时可接收多个参数

def sum(*num):
    return num[0]+num[1]+num[2]+num[3]
print(sum(1, 3, 5, 7)) #16

*用途三:作为实参传递,自动进行解包然后传递给多个单变量参数#

test(args): 的作用其实就是把序列 args 中的每个元素,当作位置参数传进去。比如上面这个代码,如果 args 等于 (1,2,3) ,那么这个代码就等价于 test(1, 2, 3)

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import sys

params=sys.argv

print("cmdLine:\t"+params[0])

# print("姓名:{0[1]},性别:{0[2]},年龄:{0[3]},血型:{0[4]},身高:{0[5]},电话:{0[6]},信息:{0[7]}" \
#       .format(params))
print("姓名:{1},性别:{2},年龄:{3},血型:{4},身高:{5},电话:{6},信息:{7}" \
      .format(*params))


a=[1,2,3,4]
print(*a,sep='\n')

'''
1
2
3
4
'''

*用途四:命名关键字参数#

  • 如果要限制关键字参数的名字,就可以用命名关键字参数,例如,只接收city和job作为关键字参数。
  • 由于命名关键字参数city具有默认值,调用时,可不传入city参数
def person(name, age, *, city='Beijing', job):
    print(name, age, city, job)

person('Jack', 24, job='Engineer')
Jack 24 Beijing Engineer

如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了

def person(name, age, *args, city, job):
    print(name, age, args, city, job)

命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def person(name, age, *args, city, job):
    print(name, age, args, city, job)
    
person('Jack', 24, 'Beijing', 'Engineer')

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: person() takes 2 positional arguments but 4 were given

使用命名关键字参数时,要特别注意,如果没有可变参数,就必须加一个作为特殊分隔符。如果缺少,Python解释器将无法识别位置参数和命名关键字参数

**用途#

  • 2**10=1024
  • **用于接收类似于关键参数一样赋值的形式的多个实参放入字典中(即把该函数的参数转换为字典)
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def demo(**p):
    print(type(p.items()))
    for i in p.items():
        print(i)
demo(x=1, y=2)

'''
<class 'dict_items'>
('x', 1)
('y', 2)
'''

**,若变量为字典,将其拆解出来,单独传给函数。

dic={'a':1,'b':2,'c':3}
string='{a}-{b}-{c}'.format(**dic)
print(string)
# 1-2-3
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值