精华内容
下载资源
问答
  • 2018-07-02 18:12:07

    最近在做一个web项目的过程中,需要查看一些Python开发文档,会发现自己学的Python基础知识有些生疏了,这里讲解一些*和**的作用,以便再次巩固复习,同时也将这个小知识分享给更多的Python爱好者。

    Python中的*与**操作符使用最多的就是两种用法
    1.用做运算符,即*表示乘号,**表示次方。
    2.用于指定函数传入参数的类型的。*用于参数前面,表示传入的多个参数将按照元组的形式存储,是一个元组;
    **用于参数前则表示传入的(多个)参数将按照字典的形式存储,是一个字典。

    *args必须要在**kwargs,否则将会提示语法错误"SyntaxError: non-keyword arg after keyword arg."


    下面将展示示例代码:

    def func(*args):
      print(type(args))
      for index, item in enumerate(args):
        '''
        enumerate()是python的内置函数
        对于一个可迭代的(iterable)/可遍历的对象(list, str,tuple),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
        >>> list1 = ['life', 'is', 'too', 'short', 'you', 'need', 'python.']
        >>> for index, item in enumerate(list1):
        ...     print(index, item)
        ...
        0 life
        1 is
        2 too
        3 short
        4 you
        5 need
        6 python.
        '''
        print("{}:{}".format(index, item))
    
    def function(**kwarg):
      print(type(kwarg))
      for key, value in kwarg.items():
        print("{}:{}".format(key, value))
    
    
    def main():
      func("python", "golang")
      function(a = "python", b = "golang")
    
    if __name__ == '__main__':
      main()
    
    '''
    结果: 
    <class 'tuple'>
    0:python
    1:golang
    <class 'dict'>
    a:python
    b:golang
    [Finished in 0.5s]
    '''

    更多相关内容
  • python中的*args和**args详解

    千次阅读 2021-03-24 14:32:49
    python中很有趣的两个小东西,先介绍: 1、*args保存多余变量,保存方式为元组。 2、**args保存带有变量名的多余变量,保存方式为字典。 上代码… #args的使用 def fun(x, y, *args): print("x=", x) print("y=",...

    python中很有趣的两个小东西,先介绍:
    1、*args保存多余变量,保存方式为元组。
    2、**args保存带有变量名的多余变量,保存方式为字典。

    上代码…

    #args的使用
    def fun(x, y, *args):
        print("x=", x)
        print("y=", y)
        print("args=", args)
    
    
    fun(1, 2, 3, 4, 5, 6, 7)
    

    输出为:

    x= 1
    y= 2
    args= (3, 4, 5, 6, 7)
    
    # **args的使用
    def fun(x, y, **args):
        print("x=", x)
        print("y=", y)
        print("args=", args)
    
    
    fun(1, 2, c=3, d=4, e=5, f=6, g=7)
    

    输出为:

    x= 1
    y= 2
    args= {'c': 3, 'd': 4, 'e': 5, 'f': 6, 'g': 7}
    
    # 共同使用
    def fun(x, y, *args, **kwargs):
        print("x=", x)
        print("y=", y)
        print("args=", args)
        print("kwargs=", kwargs)
    
    
    fun(1, 2, 3, 4, e=5, f=6, g=7)
    

    输出为:

    x= 1
    y= 2
    args= (3, 4)
    kwargs= {'e': 5, 'f': 6, 'g': 7}
    

    可以看出 *args和 **args都具有储存多余变量的功能,区别在于 *args储存没有变量名的值,存储方式为元组;而 **args存储带有变量名的值,存储方式为字典。

    展开全文
  • Python中的*(星号)和**(双星号)完全详解

    万次阅读 多人点赞 2019-03-19 22:45:42
    Python和C++不同,并没有指针,因此python中的*号作用和C++不同。网上对于这方面的教程写的啰啰嗦嗦,一点不简明扼要。看的让人找不到重点。我这里快速的讲解一下。 1.最简单的不用细说,是一个乘法运算符号 a=...

    Python和C++不同,并没有指针,因此python中的*号作用和C++中不同。网上对于这方面的教程写的啰啰嗦嗦,一点不简明扼要。看的让人找不到重点。我这里快速的讲解一下。

    1.最简单的不用细说,是一个乘法运算符号

    a=1
    b=2
    c=a*b

    输出c当然是1×2=2。相信这并非是大家关心的重点。

    2.收集列表中多余的值

    这样无需确保值与变量的个数相同。举例来说:

    a,b,*c=[1,2,3,4]

    c前面的*号主要是为了收集参数。这样输出a,是1;输出b,是2,输出c,是[3,4]。注意这里收集的是列表。

    3.涉及到函数了,*号的作用在于收集参数或者分配参数。

    具体用途,是看用*号的场合是在函数定义时还是函数调用时。(这句话至关重要!)

    3.1 如果在定义函数时,*代表收集参数,**代表收集关键字参数。

    3.1.1定义函数时,一个*的情况:

    def myprint(*params):
        print(params)

    这时候如果以如下方式调用myprint

    >>> myprint(1,2,3)

    则会输出:

    (1,2,3)

    因此作用是将调用时提供的所有值,放在一个元组里。

    跟上面2里的有所区别,2里是收集列表中多余的参数,而这里是收集好参数,一起放进元组里面。

    这种情况下,在函数定义时的形参里的*params后面,就最好不要再加入别的形参了,比如你定义成 def myprint(*params,x) ,调用的时候myprint(1,2,3),就会报错。因为这样python分不清哪个数据是给params的。如果你非要这么定义也行,不过在调用的时候,必须显示的指出哪个值是给x的。比如myprint(1,2,x=3),通过这种方式调用才不会出错。

    3.1.2 定义函数时,两个**的情况:

    对于之前参数是*params的情况,myprint并不能传入关键字参数。啥意思呢,就是仍然采取这种方式定义时:

    def myprint1(*params):
        print(params)

    这样是错误的:

    >>> myprint1(x=1,y=2,z=3)  #会报错

    因为*号并不会收集关键字参数。所以需要如下方式修改,采用两个星号:

    def myprint2(**params):
        print(params)

    这样调用myprint2就不会有问题:

    >>> myprint2(x=1,y=2,z=3)

    会输出如下结果:

    {'z':3,'x':1,'y':2}

    得到一个字典。字典中元素的先后顺序取决于你的环境。

    3.2 如果在调用函数时,*和**都是分配参数用的

    3.2.1 调用函数时,一个*的情况:

    例如,还是刚刚那个print函数

    def myprint(x,y):
        print(x)
        print(y)

    这下形参有两个了,但是我能不能只传入一个形参?

    对,“调用函数时分配参数”“定义函数时收集参数”反过来了!

    假设你还有一个元组:

    params=(1,2)

    可以通过如下方式调用myprint函数:

    >>> myprint(*params)

    就可以输出:

    1
    2

    3.2.2 调用函数时,两个**的情况:

    和上面3.1.2很像,是分配字典的。

    这回params是一个字典了:

    params={'x':1,'y':2}

    可以通过如下方式调用myprint函数:

    >>> myprint(**params)

    就可以输出:

    1
    2
    

    3.3 如果在定义和调用函数时,都使用*号呢?

    这样将值传递元组或字典,没有实际意义,不发挥收集参数或者分配参数的意义,不如不用。

    展开全文
  • Python3 * 和 ** 运算符

    万次阅读 多人点赞 2018-06-05 10:54:37
    Python ,* 和 ** 具有语法多义性,具体来说是有三类用法。1. 算数运算* 代表乘法** 代表乘方&gt;&gt;&gt; 2 * 5 10 &gt;&gt;&gt; 2 ** 5 322. 函数参数*args 和 **kwargs 主要用于...

    在 Python 中,* 和 ** 具有语法多义性,具体来说是有四类用法。

    1. 算数运算

    *  代表乘法

    ** 代表乘方

    >>> 2 * 5
    10
    >>> 2 ** 5
    32

    2. 函数形参

    *args 和 **kwargs 主要用于函数定义。

    你可以将不定数量的参数传递给一个函数。不定的意思是:预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字。其实并不是必须写成 *args 和 **kwargs。  *(星号) 才是必须的. 你也可以写成 *ar  和 **k 。而写成 *args 和**kwargs 只是一个通俗的命名约定。

    python函数传递参数的方式有两种:

    • 位置参数(positional argument)
    • 关键词参数(keyword argument)

    *args 与 **kwargs 的区别,两者都是 python 中的可变参数:

    • *args 表示任何多个无名参数,它本质是一个 tuple
    • **kwargs 表示关键字参数,它本质上是一个 dict

    如果同时使用 *args 和 **kwargs 时,必须 *args 参数列要在 **kwargs 之前。

    >>> def fun(*args, **kwargs):
    ...     print('args=', args)
    ...     print('kwargs=', kwargs)
    ... 
    >>> fun(1, 2, 3, 4, A='a', B='b', C='c', D='d')
    args= (1, 2, 3, 4)
    kwargs= {'A': 'a', 'B': 'b', 'C': 'c', 'D': 'd'}

    使用 *args

    >>> def fun(name, *args):
    ...     print('你好:', name)
    ...     for i in args:
    ...         print("你的宠物有:", i)
    ... 
    >>> fun("Geek", "dog", "cat")
    你好: Geek
    你的宠物有: dog
    你的宠物有: cat

    使用 **kwargs

    >>> def fun(**kwargs):
    ...     for key, value in kwargs.items():
    ...         print("{0} 喜欢 {1}".format(key, value))
    ... 
    >>> fun(Geek="cat", cat="box")
    Geek 喜欢 cat
    cat 喜欢 box

    3. 函数实参

    如果函数的形参是定长参数,也可以使用 *args 和 **kwargs 调用函数,类似对元组和字典进行解引用:

    >>> def fun(data1, data2, data3):
    ...     print("data1: ", data1)
    ...     print("data2: ", data2)
    ...     print("data3: ", data3)
    ... 
    >>> args = ("one", 2, 3)
    >>> fun(*args)
    data1:  one
    data2:  2
    data3:  3
    >>> kwargs = {"data3": "one", "data2": 2, "data1": 3}
    >>> fun(**kwargs)
    data1:  3
    data2:  2
    data3:  one

    4. 序列解包

    序列解包 往期博客有写过,这里只列出一个例子,序列解包没有 **。

    >>> a, b, *c = 0, 1, 2, 3  
    >>> a  
    0  
    >>> b  
    1  
    >>> c  
    [2, 3]

    展开全文
  • Python中 *args,**args的详细用法

    千次阅读 2021-05-10 16:14:09
    *args 和 **kwargs主要用于函数定义,你可以将不定数量的参数传递给某个函数。 *args *args 不定参数(不定的意思是指,预先并不知道,函数使用者会传递多少个... print("formal arg:", farg) for arg in args: pr
  • Python中的*args和**kwargs(python基础学习)

    万次阅读 多人点赞 2018-06-11 15:09:00
    print("{} == {}".format(key, value)) def test_all(*args,**kwargs): print(args) print(kwargs) ∗把函数test_args()接受到的多个参数 'name','age','address','sex' ,打包成了元组 ('name','age','...
  • Python中.*和.*?的区别

    万次阅读 2019-05-20 15:00:48
    ([1-9]\\d*|[一两二三四五六七八九十]{1,3})(百|千|)米.*") string="附近5100米" all_data_1=pattern_1.findall(string) all_data_2=pattern_2.findall(string) for data in all_data_1: print(data) for data in ...
  • python print用法是什么

    千次阅读 2020-12-09 05:19:46
    python print是用于打印输出的一个常见的函数,其使用语法是“print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)”。Python print() 函数描述print() 方法用于打印输出,最常见的一个函数。在 ...
  • python *args 和**kwargs的用法

    千次阅读 2017-11-16 17:52:59
    python *args 和**kwargs
  • 前几天看了些python的代码,发现有些函数的参数前带有()号,有的甚至有两个()号,它们代表什么意思的? 解释 查阅资料后发现,参数前面加上* 号 ,意味着参数的个数不止一个,另外带一个星号*参数的函数传入的...
  • Python中 * 的用途

    千次阅读 多人点赞 2019-08-19 22:47:29
    Python中, * 不仅仅代表乘法和列表复制,还常常用于函数的实参传递,和形参接收。 作为实参传递 def div(a,b): print(a/b) div(*(1,2)) 这里, *号的作用是将可迭代序列拆开,作为函数的实参。 另外,...
  • Python中*args、**args到底是什么、有啥区别、怎么用

    万次阅读 多人点赞 2019-07-29 09:36:10
    相信学Python的小伙伴肯定有这样的尴尬局面,给一个函数不会用,原因是:不知道参数列表的类型是什么意思, 比如初学者都会疑问的:*args和**args到底是怎么用。当你知道这个时,我猜你肯定能会用好多函数了! #*...
  • python中关于幂运算符的运算顺序(3**2**3)

    万次阅读 多人点赞 2019-05-25 16:16:49
    首先先提出问题,在python3直接print(3**2**3)会输出什么呢? print(3**2**3) 输出结果为: 6561 你自己计算的答案是不是729呢? 如果是从左往右算的话 print(3**2) print(9**3) 也就是先算3的平方是9...
  • python中*args,**args的区别

    万次阅读 多人点赞 2019-04-13 15:36:47
    @TOC 先看示例1: def test(a,b,c=3,*args): print(a) print(b) print(c) print(args) ...也就是说args保存的是没有利用的所有多余参数,保存方式为元组 再看示例2: def test(a,b,c=3,*ar...
  • 今天为大家带来的内容是python中号的用法,文中通过代码给大家介绍了双星号(*)的用法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下。 1、表示乘号 2、表示倍数,例如: def T(msg,time=1): print((msg+...
  • Python中函数的参数 * 与 **

    千次阅读 2019-07-08 10:08:12
    # Python中,形式参数加上 "*" 与 "**",成为动态参数。 # -1- "*"表示,函数可以接受多个参数,全部放入一个元祖。 # 例子: def F(*args): print(args) # 输入 F(123, '456') # 输出 (123, '456') # -...
  • 有时可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,声明时不会命名。 一个星号*的变量args会存放所有未命名的变量参数,args为元组;...print(“a =”,a) print(“b =”,b) # *arg...
  • Python输出函数print()总结(python print())

    万次阅读 多人点赞 2018-07-22 16:34:42
    python版本:python3.5.1 ; IDE:pycharm2017.2 目录 一、print()函数概述 二、变量的输出 三、数据的格式化输出 ...print() 方法用于打印输出,是python中最常见的一个函数。 该函数的语法如下:...
  • python中x[::]什么意思

    千次阅读 2020-12-06 05:27:07
    切片 即list取值的一种方式, 取值是顾头不顾尾,注:切片的步长默认为1,不可为0例如:(推荐学习:Python视频教程)num2 = [1, 2, 3, 4, 5, ["a", "b", "c", ["d", "e"]]]print(num2[3:6]) # 这个切片表示获取从第三...
  • python中print的使用方法

    千次阅读 2021-02-09 19:10:24
    python中print的使用方法发布时间:2020-07-02 11:36:31来源:亿速云阅读:105作者:Leah这篇文章将为大家详细讲解有关python中print的使用方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇...
  • **和*常常用于参数传递的打包和解包,对函数传递的参数进行打包(打包成元组tuple或字典dictionary)和拆解(分解成单个元素),其中元组tuple的打包和解包使用单星号,字典dictionary的打包和拆解使用双星号 ...
  • python *args和**kw详解

    万次阅读 2016-03-22 21:16:35
    *args是非关键字参数,用于元组,**kw是关键字参数,用于字典 1.*args ... print('arg 1:%s ' % arg1)  print('arg 2:%s ' % arg2)  for eachArgNum in range(len(arg3)
  • python *号的含义

    千次阅读 2019-11-24 22:11:16
    python中*代表的含义 1、表示乘号 2、表示倍数,例如: def T(msg,time=1): print((msg+' ')*time) T('hi',3) 打印结果(打印3次): hi hi hi 3、单个 *(1)、如:*parameter是用来接受任意多个...
  • python参数*params、**params使用

    千次阅读 2020-03-05 12:46:55
    目录 收集其余的位置参数:*params(输出元组) 收集关键字参数:**params(输出字典) 收集其余的位置参数:*params(输出元组) ...def print_params2(x,*params):#位置参数+收集位置参数...
  • python中print输出格式有哪些

    千次阅读 2020-12-02 05:03:22
    python中print输出格式有:1、可用加号连接【print("I " + "love " + "you")】;2、逗号连接会自动在连接串之间加上空格【print("I","love","you")】;3、也可直接连接。python中print输出格式有:Python中 ""与''是...
  • Python中print的用法

    万次阅读 多人点赞 2020-10-12 19:28:20
    1.Python中print()函数的概述 print()方法用于打印输出,是python中最常见的一个函数。(python2不是函数) 该函数的语法如下: print(*objects, sep=' ', end='\n', file=sys.stdout) 参数的具体含义如下: ...
  • Python 列表前加 *号

    千次阅读 2020-09-13 22:49:49
    列表前面加星号作用是将列表解开成两个独立的参数...print add(*data) >>> 7 #equals to print add(4, 3) data = {'a' : 4, 'b' : 3} print add(**data) >>> 7 #equals to print add(4, 3) Ref p
  • Python中 *args 和 **kwargs 的区别

    万次阅读 多人点赞 2016-10-13 14:34:26
    先来看个例子:def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '---------------------------------------'if __name__ == '__main__': foo(1,2,3,4) foo(a=1,b=2,c
  • Python打印“*”的三角形

    千次阅读 多人点赞 2020-05-11 21:09:22
    打印如下形状的三角形 def PrintTriangle(num): z = 1 for x in range(num): for y in range(num-1-x... print(" ",end = "") for m in range(z): print("*",end = "") z+=2 print("\n") PrintTriangle(int(i

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,880,760
精华内容 1,152,304
关键字:

python print中的*

友情链接: c8051f_SD.zip