zoukankan      html  css  js  c++  java
  • python 星号的使用

    python 星号的使用

    在调用或者使用函数的时候经常会出现*,有的时候用一个,有的时候用两个,这个含义具体是什么呢?

    定义方法时使用星号

    一个星号的情况:

    def fun(*args):
        print(isinstance(args, tuple)) #返回的是True
        for i in args:
            print(i)
    fun(1, 2, 3)
    

    上面的例子表示,我们虽然传递了3个参数1, 2, 3,但是fun函数把他们放到了一个元组。并且参数的个数不限。

    两个星号的情况:

    def fun2(**kwargs):
        print(isinstance(kwargs, dict)) #返回的是True
        pass
    fun2(a=1, b=2, c=3)
    

    上面的例子表明,使用两个星号,我们传递的参数是被当作一个字典来进行传递的,参数的个数不限。其实我们看kwargs这个名字就可以推出,这个参数是字典类型的。

    调用方法时使用星号

    一个星号的情况

    def fun(a, b, c):
        return a+b+c
    test = [1, 2, 3]
    print(fun(*test))
    #把序列test中的每个元素,当作位置参数传递到函数中去,就不用test[0],test[1]这样了
    

    前提是传递序列中元素的个数应该和函数定义的参数。

    实际上使用一个星号其实是对列表进行解包操作。

    两个星号的情况

    def fun(c, b, a):#注意顺序
    	return a==1 and b==2 and c==3
    test = {'a':1, 'b':2, 'c':3}
    print(fun(**test))
    

    虽然字典中的定义的数据和函数定义的顺序不一致,但是我们是按照关键字来进行函数赋值的,所以这个函数返回的结构是True

    使用两个星号实际是对字典进行解包操作。

  • 相关阅读:
    samba 服务搭建
    lock
    dev GridControl FilterCriteria
    dev GridControl Column 背景色
    Microsoft NLayerApp案例理论与实践
    DDD
    .Net架构师-开闭原则
    .Net架构师-面向对象的设计原则
    .Net架构师-详解面向对象
    .Net架构师-面向过程和面向对象
  • 原文地址:https://www.cnblogs.com/alking1001/p/13633850.html
Copyright © 2011-2022 走看看