惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
I
InfoQ
人人都是产品经理
人人都是产品经理
博客园 - 三生石上(FineUI控件)
爱范儿
爱范儿
Hugging Face - Blog
Hugging Face - Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
SegmentFault 最新的问题
美团技术团队
小众软件
小众软件
Blog — PlanetScale
Blog — PlanetScale
Jina AI
Jina AI
aimingoo的专栏
aimingoo的专栏
H
Help Net Security
Last Week in AI
Last Week in AI
博客园_首页
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
L
LangChain Blog
云风的 BLOG
云风的 BLOG
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
G
Google Developers Blog
博客园 - 叶小钗
博客园 - Franky

老董笔记

尚硅谷机构在哪?尚硅谷培训怎么样?靠谱吗-互联网IT百科 韩顺平介绍,传智讲师,开办泰牛,入尚硅谷等一系列-互联网IT百科 pandas多重索引标准样式(写入excel有空行)-互联网IT百科 cannot join with no overlapping index names-互联网IT百科 pandas多列变多行(即宽表变长表)melt和stack函数-互联网IT百科 pandas多行转多列(长表变宽表)pivot和unstack-互联网IT百科 Index contains duplicate entries, cannot reshape完美解决-互联网IT百科 single positional indexer is out-of-bounds-互联网IT百科 Can only compare identically-labeled Series objects-互联网IT百科 pandas transform用法详解(多个案例)-互联网IT百科 python四舍五入精确实现-互联网IT百科 pandas的groupby使用apply分组排序-互联网IT百科 index 0 is out of bounds for axis 0 with size 0-互联网IT百科 pandas分组过滤filter函数-互联网IT百科 联想Win10系统如何禁用触摸屏关闭触摸-互联网IT百科 groupby分组计算transform转换返回相同长度序列-互联网IT百科 brooks seo教程python教程,brooks seo教程网盘,布鲁seo资源-互联网IT百科 电脑右键文件夹一直转圈电卡死怎么回事-互联网IT百科 施琪嘉的心理成长课(荐)-互联网IT百科 百度SEO公司_SEO推广公司哪家好_SEO外包服务如何选-老董笔记 groupby后agg同1列用多个聚合函数、不同列用不同函数、自定义函数-互联网IT百科 pandas的groupby单列多列分组聚合运算-互联网IT百科 DataFrameGroupBy对象及分组个数、分组大小、组名索引、组数据详解-互联网IT百科 pandas中groupby之Grouper and axis must be same length-互联网IT百科 pandas中groupby的分组原理-互联网IT百科 pandas的groupby的使用详解大全-互联网IT百科 openpyxl单元格自动换行强制换行Alignment(wrapText=True)-互联网IT百科 python教程全套(可就业)-互联网IT百科 联想win10系统CPU显示100%,电脑呼呼响怎么回事-互联网IT百科 如何自制CPU,CPU原理是怎么样的?-互联网IT百科
Python函数可变参数*args,**kwargs-互联网IT百科
2019-09-07 · via 老董笔记

  可变参数,又称不定长参数,即传入函数中的参数可以是任意多个。或者说一个函数能处理比当初声明时更多的参数。听起来很神奇,如何实现呢?

  主要有2 种形式:形参前添加一个 * 或者形参前添加两个 *,形参名不是固定的,但是人类习惯用args和kwargs。

  1形参前添加一个 *,形参本身被当做元祖处理,该元组可接受任意个非关键字实参。

# -*- coding: utf-8 -*-


def test_arg(name, *args) :
    print(name,args) # args被当做元组
    for person in args:
        print(person,'嘿嘿')

test_arg('隔壁老王', '妇女1','妇女2','妇女3')
D:python3installpython.exe D:/pyscript/py3script/python66/python66.py
隔壁老王 ('妇女1', '妇女2', '妇女3')
妇女1 嘿嘿
妇女2 嘿嘿
妇女3 嘿嘿

Process finished with exit code 0



  易错点:上面的函数如果*agrs和name调换顺序,name必须以关键字实参的形式传参,否则报错。

# -*- coding: utf-8 -*-


def test_arg(*args,name) :
    print(name,args) # args被当做元组
    for person in args:
        print(person,'嘿嘿')

test_arg('妇女1','妇女2','妇女3',name='隔壁老王')

print('=================================')
def test_arg(*args,name) :
    print(name,args) # args被当做元组
    for person in args:
        print(person,'嘿嘿')

test_arg('妇女1','妇女2','妇女3','隔壁老王')
D:python3installpython.exe D:/pyscript/py3script/python66/python66.py
隔壁老王 ('妇女1', '妇女2', '妇女3')
Traceback (most recent call last):
妇女1 嘿嘿
妇女2 嘿嘿
妇女3 嘿嘿
=================================
  File "D:/pyscript/py3script/python66/python66.py", line 17, in 
    test_arg('妇女1','妇女2','妇女3','隔壁老王')
TypeError: test_arg() missing 1 required keyword-only argument: 'name'

Process finished with exit code 1



  2 形参前添加两个*,形参本身被当做字典,该字典可以接收任意个对关键字参数赋值的实参(key=value)。

# -*- coding: utf-8 -*-


def test_karg(name,**kargs) :
    print(name,kargs) # kargs被当做字典
    for person,age in kargs.items():
        print(person,age)

test_karg('王老五',小妾1=18,小妾2=28)


D:python3installpython.exe D:/pyscript/py3script/python66/python66.py
王老五 {'小妾1': 18, '小妾2': 28}
小妾1 18
小妾2 28

Process finished with exit code 0



 *args、*kargs混合使用,你可能会出错。

# -*- coding: utf-8 -*-

def test(a, b, c=3, *args, **kargs) :
    print(a, b, c)
    print(args)
    print(kargs)
test(1, 2, "www.python66.com" , "我是args", p1='隔壁老王', p2='隔壁老张')

D:python3installpython.exe D:/pyscript/py3script/python66/python66.py
1 2 www.python66.com
('我是args',)
{'p1': '隔壁老王', 'p2': '隔壁老张'}

Process finished with exit code 0


很赞哦!

python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群 python学习会