返回顶部
首页 > 资讯 > 后端开发 > Python >Python函数参数中的*与**运算符
  • 144
分享到

Python函数参数中的*与**运算符

2024-04-02 19:04:59 144人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

问题描述 在阅读某些代码时,经常会看到函数定义/调用时的参数前带有 * 或者 ** 运算符,比较糊涂,今天来探究记录一番. 函数定义时的 * 和 ** 查阅相关资料得知,在参数前

问题描述

在阅读某些代码时,经常会看到函数定义/调用时的参数前带有 * 或者 ** 运算符,比较糊涂,今天来探究记录一番.

函数定义时的 * 和 **

查阅相关资料得知,在参数前面加上* 号 ,意味着参数个数不止一个,而带一个星号(*)参数的函数传入的参数存储为一个元组(tuple),带两个(*)号则是表示字典(dict)!

我们定义3个函数来分别测试一下*和**的功能。

第一个函数func1参数列表中有两个参数,其中参数b前有*
第二个函数func2参数列表中有两个参数,其中参数b前有**
第三个函数func3参数列表中有三个参数,第二个参数前有*,第三个参数前有**


def func1(a, *b):
  print(a)
  print(b)
  
def func2(a, **b):
  print(a)
  print(b)
  
def func3(a, *b, **c):
  print(a)
  print(b)
  print(c)

然后我们进行参数传入


func1(1, 2, 3, 4)
print("---"*24)
func2(1, x=1, y=2)
print("---"*24)
func3(1, 2, 3, 4, x=5, y=6)

打印结果为:

$python3 main.py
 
(2, 3, 4)
------------------------------------------------------------------------
1
{'x': 1, 'y': 2}
------------------------------------------------------------------------
1
(2, 3, 4)
{'x': 5, 'y': 6}

可以看到,第一个函数将多余1个的后续参数全部以元组形式赋值给了带*参数b,第二个函数则将多余参数以字典形式赋值给了带**参数b,当*和**同时存在时,一个星号(*)参数的函数传入的参数存储为一个元组(tuple),带两个(*)号则是表示字典(dict)。

如果这里我们不使用赋值形式传入参数来调用func2时,程序则会报错,例如


func2(1, 2, 3, 4)
print("---"*24)

将会有如下报错信息:

Traceback (most recent call last):
  File "main.py", line 18, in <module>
    func2(1, 2, 3, 4)
TypeError: func2() takes 1 positional argument but 4 were given

*和**调用时的作用

在调用时,*主要是用来解压参数列表,对于set、tuple、list、dict(会取其values的值)类型的数据都适用。实验代码如下:


def func4(a, b):
  print(a)
  print(b)

params_set = (1, 2)
params_tuple = (1, 2)
params_list = [1, 2]
params_dict = {
  "a": 1,
  "b": 2
}

我们使用*参数方式对其分别进行调用


print("***"*24)
func4(*params_set)
print("***"*24)
func4(*params_tuple)
print("***"*24)
func4(*params_list)
print("***"*24)
func4(*params_dict)
print("***"*24)

打印结果如下:

************************************************************************
1
2
************************************************************************
1
2
************************************************************************
1
2
************************************************************************
a
b
************************************************************************

 可以看到,*将参数按顺序一一赋值(set并无顺序,因此盲猜结果是随机的,未实验验证),而dict类型则是将字典的keys作为函数参数进行赋值。

**参数方式则要求输入必须是一个dict,而且变量名称要与函数定义的变量名称一致,实验代码如下:


params_dict1 = {
  "a": 1,
  "b": 2
}
params_dict2 = {
  "x": 1,
  "y": 2
}

print("---"*24)
func4(**params_dict1)
print("---"*24)
func4(**params_dict2)

打印结果如下:

------------------------------------------------------------------------
1
2
------------------------------------------------------------------------
Traceback (most recent call last):
  File "main.py", line 57, in <module>
    func4(**params_dict2)
TypeError: func4() Got an unexpected keyWord argument 'x'

可以看到,当变量名称与函数定义的变量名称不一致时,程序会报错

参考

python函数中参数前带*和**是什么意思?
Execute Python-3 Online (Python v3.6.2),

到此这篇关于Python函数参数中的*与**运算符的文章就介绍到这了,更多相关Python *与**运算符内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python函数参数中的*与**运算符

本文链接: https://lsjlt.com/news/122977.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python函数参数中的*与**运算符
    问题描述 在阅读某些代码时,经常会看到函数定义/调用时的参数前带有 * 或者 ** 运算符,比较糊涂,今天来探究记录一番. 函数定义时的 * 和 ** 查阅相关资料得知,在参数前...
    99+
    2024-04-02
  • python如何使用splat运算符解包函数参数
    这篇文章将为大家详细讲解有关python如何使用splat运算符解包函数参数,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用 splat 运算符解包函数参数。splat 运算符提供了一种解压参数列表的艺...
    99+
    2023-06-27
  • 字符函数/运算符函数
    1、常用的字符函数 concat() 字符连接 concat_ws()    使用指定的分割符进行字符串连接 format() 数字格式化   lower() 转换成小写字符   uppe...
    99+
    2016-12-18
    字符函数/运算符函数
  • Python 中的lambda匿名函数和三元运算符
    目录匿名函数什么是匿名函数分类三元运算符匿名函数 什么是匿名函数 用一句话表达只有返回值的函数就是匿名函数。匿名函数只用来实现一些简单的函数功能,所以追求代码的简洁和高效。使用关键字...
    99+
    2024-04-02
  • 深入了解Python中运算符函数的使用
    Python 在“运算符”模块下为许多数学、逻辑、关系、按位等操作预定义了函数。本文介绍了一些基本功能。 1. add(a, b)  :- 这个函数...
    99+
    2024-04-02
  • Python变量、数据类型与运算符
             1、掌握变量使用及命名规则1.1 变量赋值变量赋值通过“=”实现,实例: a = 5 b = 3.14 c = ‘abc’注意事项:变量名尽量具有现实意义  实例: price = 100 Name = ‘张飞’ Age ...
    99+
    2023-01-31
    变量 数据类型 运算符
  • Python中数字以及算数运算符的相关使用
    Python数字 数字数据类型用于存储数值。 他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。 当你指定一个值时,Number对象就会被创建: var1 = 1 var2 = 1...
    99+
    2022-06-04
    运算符 数字 Python
  • MYSQL数值运算符和函数用法
    mysql也有数值运算,那么列出常见的函数 ceil() div() floor() mod() power() round() truncate()等等,具体说说MYSQL数值运算符和函数用法。 1,ce...
    99+
    2024-04-02
  • MYSQL——常用运算符和函数
       MYSQL的常用运算符1   字符函数   CONCAT()    字符连接   CONCAT_W&#...
    99+
    2024-04-02
  • Python中的lambda匿名函数和三元运算符怎么用
    这篇文章主要讲解了“Python中的lambda匿名函数和三元运算符怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中的lambda匿名函数和三元运算符怎么用”吧!匿名函数什...
    99+
    2023-06-30
  • ES6箭头函数、rest参数、扩展运算符和Symbol如何使用
    今天小编给大家分享一下ES6箭头函数、rest参数、扩展运算符和Symbol如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文...
    99+
    2024-04-02
  • PHP中数组`+`运算符
    原代码: foreach($result as $item){ $ret[$item['fid']]["{$time}_num"] = $item['num'] 0; $ret[$item['fid']]["{$time}...
    99+
    2023-09-13
    php 开发语言
  • JavaScript运算符、 算数运算符、赋值运算符怎么用
    这篇文章主要介绍“JavaScript运算符、 算数运算符、赋值运算符怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript运算符、 算数运算符、...
    99+
    2024-04-02
  • python学习之数据类型与运算符号
    python版本:3.6    python编辑器:pycharm 最新版本 整理成代码如下: #!/usr/bin/env python #-*- coding: utf-8 -*- # 数学操作符 print(2 ** 3) ...
    99+
    2023-01-30
    数据类型 符号 python
  • Python 运算符Inplace 与Standard
    前言: 普通运算符执行简单的分配工作。另一方面,Inplace 运算符的行为类似于普通运算符,只是它们在可变和不可变目标的情况下以不同的方式运行。  _add_方法进行简单...
    99+
    2024-04-02
  • JavaScript运算符怎么调用函数
    这篇“JavaScript运算符怎么调用函数”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2024-04-02
  • JavaScript算数运算符、运算符和操作数是什么
    今天小编给大家分享一下JavaScript算数运算符、运算符和操作数是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收...
    99+
    2024-04-02
  • MySQL数据库中的算术运算符
    MySQL数据库中的算数运算符一、运算符的概述:    运算符在MySQL数据库中也是很重要的知识体,在执行sql语句的时候这个运算符对操作数据帮助很大。其中运算符的...
    99+
    2024-04-02
  • shell中的算数运算符有哪些
    这篇文章主要介绍了shell中的算数运算符有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇shell中的算数运算符有哪些文章都会有所收获,下面我们一起来看看吧。下面列出了常用的算术运算符,假定变量 a 为 ...
    99+
    2023-06-27
  • python函数的参数
    书写一个函数def  power(x):    return x * x对于power(x)函数,参数x就是一个位置参数,当我们调用power(x)函数时,必须传入有且仅有一个参数xpower(5)power()也是内置函数,用法power...
    99+
    2023-01-31
    函数 参数 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作