• 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)
    
    import sys
    
    params=sys.argv
    
    print("cmdLine:	"+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='
    ')
    
    '''
    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)
    
    
    • 命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错:
    
    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
    • **用于接收类似于关键参数一样赋值的形式的多个实参放入字典中(即把该函数的参数转换为字典)
    
    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
    
    
  • 相关阅读:
    eclipse自动切换到debug视图
    Android Studio 1.1.0 “关联源码” 或者“导入源码” ,又或者插件包
    Eclipse中如何安装和使用GrepCode插件 (转)
    转【Python】同时向控制台和文件输出日志logging
    AngularJs学习
    MongoDB聚合运算之mapReduce函数的使用(11)
    MongoDB聚合运算之group和aggregate聚集框架简单聚合(10)
    MongoDB的分片(9)
    MongoDB replication set副本集(主从复制)(8)(转)
    MongoDB的导入导出(7)
  • 原文地址:https://www.cnblogs.com/huxiaobai/p/12101771.html
Copyright © 2020-2023  润新知