①引言

在Python中,星号除了用于乘法数值运算和幂运算外,还有一种特殊的用法是在变量前加单个星号或两个星号,实现多参数的传人或变量的拆解。

②什么是星号变量

最初,星号变量是用在函数的参数传递上的,在下面的实例中,单个星号代表这个位置接受任意多个非关键字参数,在函数的*b位置上将其转化成元组,

def one(a,*b):
"""a是一个普通传入参数,*b是一个非关键字星号参数"""
print(b)
one(1,2,3,4,5,6)

out:(2,3,4,5,6)

③双星号代表这个位置接收任意多个关键字参数,在**b位置上将其转化成字典:

def two(a=1,**b):
"""a是一个普通关键字参数,**b是一个关键字双星号参数"""
print(b)
two(a=1,b=2,c=3,d=4,e=5,f=6)

out:two(a=1,b=2,c=3,d=4,e=5,f=6)

④扩展用法单星号变量实例

单星号变量不仅仅能够用在函数的参数传递中,实际上对一个普通变量使用单星号前缀,能够将这个变量拆分成单个元素,请看下面的实例

如果在变量前面使用单星号,实际上是对变量的一次拆解操作,将变量中单独的元素拆解出来,函数会将这些传入的单个元素保存成一个元组,这就是为什么我们 print(x[0])能够提取第一个元素的原因.

列表是可以更改的,将列表拆分后传入函数,尝试在函数内部更改第一个元素的值,结果触发了“TypeError”异常,不论传入的参数的原始类型是什么,four(*x)函数在*x的位置接受这些传入的参数后,都会将其保存成”元组”,而元组是不能改变的。

如果传入了一个字典元素,发现仅输出了字典元素的键,并没有包含值,实际上,单星号是无法读取到字典中的值的,永远只会读取到字典中的键,如果想读取到字典中的值,需要使用双星号

⑤扩展用法双星号变量实例

我们使用单星号拆分了一个字典传递给函数,却只能得到字典的键,下面演示如何使用双星号来获得字典的值:


 绿色 1)这里保存成元组

Ps:注意,使用这种方法将字典传入函数的时候,字典的键的命名要符合python变量的命名规则,通过上面的分析也不难看出,双星号会将字典首先转换成关键字参数的形式,就相当于将字典中的键作为变量命,如果键不符合变量命名规则,会抛出一个"TypeError"异常,大家可以尝试着颠倒一下上面字典中的键和值,使用数字作为键,看看会出现什么问题。

⑥在一个函数的接收参数中,同时出现"非关键字参数(位置参数)"和"关键字参数"时,可以使用一个单星号来分隔这两种参数

⑦要在一个函数中包含多种参数的组合,必须遵守这样的顺序:位置参数(必选参数),默认参数,单星号参数或星号分隔符,关键字参数,双星号参数;

请看下面的实例

最新文章

  1. ORACLE常用数值函数、转换函数、字符串函数
  2. NET出现频率非常高的笔试题
  3. autolayout sizeclass 资料集锦
  4. Protractor
  5. 01 Developing Successful Oracle Applications
  6. python简单的发送邮件
  7. nginx 代理 proxy_pass设置
  8. 自定义VIew基础
  9. Android学习笔记之Intent(2)
  10. Layout 不可思议(一)—— CSS 实现自适应的正方形卡片
  11. centos/linux下的安装vsftpd
  12. %zsy %lqs 随感
  13. 网球pt站 T3nnis 情况说明
  14. 如何启动linux的telnet服务--转载
  15. Django11-ModelForm
  16. Jetbrains IntelliJ IDEA PyCharm 注册激活(2018最新)
  17. zabbix 添加自动发现端口并监控
  18. Flink--3种分区方式
  19. Python 关于Python函数参数传递方式的一点探索
  20. spring学习 四 对象的创建

热门文章

  1. Unity中Oculus分屏相机和普通相机一键切换
  2. C++异常 异常机制
  3. 为什么使用eval()将json字符串转换为对象要多加一个小括号
  4. 《转》python学习(7) -列表
  5. ajax操作的链式写法
  6. js判断手机型号
  7. ShowDoc 搭建 (未成功....)
  8. MDK软件仿真常见问题
  9. rest_framework之规范详解 00
  10. JAVA内存构成详解