首页 > 编程语言 >python关于*args所能接收的参数、关于**kwargs所接收的参数详解

python关于*args所能接收的参数、关于**kwargs所接收的参数详解

时间:2023-04-12 16:55:53浏览次数:35  
标签:func2 python args 元组 参数 kwargs 接收

 1 #!/usr/bin/env python
 2 # -*- coding:utf8 -*-
 3 # python-day32-20170110:
 4 
 5 
 6 # 关于*args所能接收的参数
 7 
 8 # 这种接收的是位置参数,可变长
 9 def func1(*args):
10     print(args,type(args))
11 
12 # 传入位置参数可以被args所接收,以元组的形式来保存
13 func1(1,2,3,4)  # (1, 2, 3, 4) <class 'tuple'>
14 
15 # 传入的位置参数也可以是元组,所传入的元组也是新生成的元组中的一个元素
16 func1((1,2,3,5),'a','b')  # ((1, 2, 3, 5), 'a', 'b') <class 'tuple'>
17 
18 # 传的元组前面加*后,遍历该元素中的每个元素添加到新元组
19 func1(*(1,2,3,5),'a','b')  # (1, 2, 3, 5, 'a', 'b') <class 'tuple'>
20 
21 # 注意 *args不能接收关键字参数
22 # func1(x=3)  # 报错
23 
24 
25 # 传入字典,字典也做为args元组中的一个元素而已
26 func1({"k1":"v1","k2":"v2"})  # ({'k1': 'v1', 'k2': 'v2'},) <class 'tuple'>
27 
28 # 所传入的字典前面加*后,则会把字典中的每个键做为元组的元素
29 func1(*{"k1":"v1","k2":"v2"})  # ('k1', 'k2') <class 'tuple'>
30 
31 # 字典前面加双** ,相当于关键字参数,而*args则接收不了关键字参数。
32 # func1(**{"k1":"v1","k2":"v2"})  # 报错。
33 
34 
35 print("-----------------------------------------------------")
36 
37 # 关于**kwargs所接收的参数
38 
39 def func2(**kwargs):
40     print(kwargs,type(kwargs))
41 
42 
43 #  **kwargs 无关接收位置参数
44 # func2(1,2,3)  # 报错
45 
46 # **kwargs可接收关键字参数,则是以字典的形式来进行保存
47 func2(x=1,y=2)  # {'x': 1, 'y': 2} <class 'dict'>
48 
49 # **kwargs 无法接收元组作为参数
50 # func2((1,2,3,4)) # 报错
51 
52 # 元组前面加**也会报错
53 # func2(**(1,2,3,4))  # 报错TypeError: __main__.func2() argument after ** must be a mapping, not tuple
54 
55 # **kwargs 无法拉直接接收字典作为参数
56 # func2({'x': 1, 'y': 2})
57 
58 # 字典前面加**后可以被kwargs所接收
59 func2(**{'x': 1, 'y': 2})  # {'x': 1, 'y': 2} <class 'dict'>
60 
61 # 综上我们可知**kwargs所能接收到的是字典前面加**或者是关键字参数
62 func2(**{'x': 1, 'y': 2},z = 88)  # {'x': 1, 'y': 2, 'z': 88} <class 'dict'>

 

标签:func2,python,args,元组,参数,kwargs,接收
From: https://www.cnblogs.com/i5ba/p/17310369.html

相关文章

  • python get请求抓取网页
    importrequestsurl='https://www.douban.com/search?'#req=requests.get(url)headers={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/94.0.4606.81Safari/537.36......
  • Python 环境迁移
    平时用python环境会装一堆依赖,也包括自己的模块,要迁移到陌生环境,得好好处理才行。下面介绍个方法,实践过还可以:总结下步骤:miniconda或conda安装一个python环境,python版本最好和后面新环境一样。condacreate-nszpython=3.6.8在该conda里面装好自己的各种依赖,并跑起来。pi......
  • linux下使用pyinstaller打包python脚本
    最近给运维写一个系统维护的python脚本,但是被告知生产环境有很多服务器没有安装python解释器,于是在网上搜索多pyinstaller解决方案,本文简单记录之。下载pyinstaller。最新的pyinstaller版本为2.0版本,官方网站http://www.pyinstaller.org。下载链接:http://jaist.dl.sourceforge......
  • 在docker安装Python环境提供给其他docker使用
    1.在宿主机新建一个目录2.在app目录下新建一个Dockerfile文件本文永久更新地址:1.在宿主机新建一个目录在宿主机上新建一个目录如app/,在app目录里面导入项目需要依赖的包在项目根目录下输入命令,导出python项目所有的依赖包pipfreeze>requirements.txt把导出的re......
  • Python json基本使用json.dumps() 和json.loads()
    Python中json的基本使用 json.dumps()和json.loads()JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,它是JavaScript的子集,易于人阅读和编写。Json最广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式,现在也常用于http请求中。Python中可用json模块来......
  • 设置jupyter notebook的python environment
    (base)$condainstallnb_conda_kernels(base)$condacreate--namenew-env(base)$condaactivatenew-env(new-env)$condainstallipykernel(base)$condadeactivate(base)$jupyternotebookclickkernel,selectchangekernel,youwillseeyourenviro......
  • Java:使用hutool工具类UrlBuilder、urlQuery构建url查询参数
    依赖<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.4.6</version></dependency>url查询参数构建packagecom.example;importcn.hutool.core.net.url.UrlQuery;im......
  • python爬虫(四):文本、图片、视频爬取实例
    上篇讲了常用的python爬虫工具,可以快速支撑我们数据的爬取--解析--分析,这里将拆解几个爬虫程序实例进行学习,实例来自于https://cuijiahua.com/blog/2020/04/spider-6.html的系列教程或者其他小爬虫;一、文本图表数据抓取(编程语言排名)#!/usr/bin/envpython#coding:utf-8importr......
  • python中的pandas小试
    在实习的项目中,得到宽表后的后续工作是用R语言写的,包括数据探索,数据清洗,建模,模型分析。因为之前用过python,写过简单爬虫,就想着自己试着将R语言的脚本写成python,或许对于未来有帮组、然而,在pyhon3.5连接teradata的问题上一直搞不通、、、所以,只能先学一下pandas之类的基础了,本来想法......
  • Python script get date and time All In One
    PythonscriptgetdateandtimeAllInOnePythonshellscriptprintcurrentdatetimetologfile#✅......