IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python中的*与**用法详解 -> 正文阅读

[Python知识库]python中的*与**用法详解

前言

??由于之前主要用的是C/C++,总把python中的*,**看成与指针相关,其实python中是没有指针的,如果看成指针那么程序一定看不懂。这里查阅了一些资料,对python中的 * 与 **的用法做一个总结。总的来说,python中*与 **的作用一共有四个,分别是数值计算、序列解包、函数声明的时候作为函数形参、函数调用的时候作为函数实参。注意,数值运算与序列解包中没有 **用法

数值运算

??这个没啥可说的了,就是乘法:

a = 5;
b = 6;
c = a * b

序列(列表、元组)解包

??先看一个例子吧:

list = [1,2,3,4,5]
a,b,*c =list
print('a=',a)
print('b=',b)
print('c=',c)

??结果如下:

在这里插入图片描述
??通过上面的代码,*号的作用也就一目了然了,*号让c能接收列表中剩下的所有的参数,这样在序列解包的时候我们的灵活度就大大提高了,比如我们用3个变量就能接受长度为5的序列中的所有的值。

函数声明的时候作为函数形参

??大家应该会经常看到类似这样的函数:def function( * arg,** kwargs): ,这里的* arg与**kwarg都是为了接受不定长参数的。其中*arg是位置参数,用于接受不定长的无名参数,本质是一个元组,**kwargs是关键字参数,本质是一个字典。还有一点arg,kwargs就是一个变量名,换成 *a,**b效果是一样的。接下来看代码:

def function(*args,**kwargs):
    print(args)
    print(kwargs)
    print(args[0])
    print(kwargs['b'])
my_list = [1,2,3,'a','b']
my_dict = {'a':1,'b':0,'c':2}
function(*my_list,**my_dict)

??结果如下图所示:
在这里插入图片描述

函数调用的时候作为函数实参

??如果函数的参数是固定长度的,我们可以通过*arg或者**kwarg一次性传递,而不用分别给每个参数传递值。具体如下:

class test(object):
    def __init__(self,arg,list,name='nihao'):
        self.arg = arg
        self.list = list
        self.name = name
    def print_p(self):
        print(self.arg)
        print(self.list)
        print(self.name)

if __name__ == "__main__":
    my_list = [44,55,'A']
    my_dict = {'arg':77,'list':88,'name':'B'}
    A = test(*my_list)  #相当于test(44,55,‘A’)
    B = test(**my_dict)
    A.print_p()
    print("----------我是一条分割线---------")
    B.print_p()

??结果如下:
在这里插入图片描述
??上面的代码中,我们通过了*arg与 ** kwarg给test类的构造函数一次性传递了arg,list,name三个变量的值。这里还有一个东西需要注意一下,这种情况下如果使用** kwarg方式传值,那么**kwarg这个字典中的键值应该与函数的形参名字保持一致否者会报错,比如上面那个例子中,my_dict中的键值必须是arg,list,name,与test中的构造函数的形参值一样。

参考资料:
https://blog.csdn.net/zkk9527/article/details/88675129
https://blog.csdn.net/yilovexing/article/details/80577510

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:14:27  更:2022-05-05 11:18:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 16:58:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码