Python常见面试题. Python中的解包操作及其应用场景

news2024/11/26 4:53:03
  • 这是个简单的知识点,但有的同学并不理解

  • unpacking解包

  • 解,对应的是*或者**,也有自动解包之说

  • 包对应的可迭代对象

Python助学大礼包点击跳转获取

目录

      • 一、自动解包
      • 二、数据过多的解包*
      • 三、星号在函数中的使用
      • 四、两个星号的解包
      • 五、场景的应用

一、自动解包

赋值的demo

a,b = [1,2]
print(a) # 1
print(b) # 2

将容器里面的元素逐个取出来分别赋值
不一定是列表,可以是元组、字典、字符串等一切可迭代的对象
比如这样

t1,t2 = (1,2)
s1,s2 = 'ab'
d1,d2 = {'name':'wuxianfeng','age':18}  # d1 是 name, d2 是age

不过要注意的是字典的解包,只是个key
也可以这样

a, *b, c = range(5)  # b 就是[1,2,3]

二、数据过多的解包*

有的时候数据可能会过多,那就要用到星号了

a,b,c = 1,2,3,4
# 报错了
ValueError                                Traceback (most recent call last)
<ipython-input-6-e6e12dfe99e4> in <module>
----> 1 a,b,c = 1,2,3,4

ValueError: too many values to unpack (expected 3)

怎么办?

a,*b,c = 1,2,3,4
# 此时的b的值为  [2, 3],是个列表

# 如果这样
a,b,*c = 1,2,3,4  # 那么c就是[3,4]

有点像这样

list1 = [1,2,3,4,5,6,7,8]
first , rest = list1[0],list1[1:]   
first , *rest = list1  # 以上两种写法一样的,都能让rest是 [2,3,4,5,6,7,8]

三、星号在函数中的使用

代码演示

def fun(x,y):
    print(f'x={x}')
    print(f'y={y}')

fun(1,2) 
# 输出如下..
# x=1
# y=2

那要是这样呢?

fun([1,2]) 
# 报错了
TypeError                                 Traceback (most recent call last)
<ipython-input-8-6924a6444e6f> in <module>
----> 1 fun([1,2])

TypeError: fun() missing 1 required positional argument: 'y'

但可以这样

fun(*[1,2])  # x=1 y=2

fun(*'ab') # x=a y=b

fun(*(3,4)) # x=3 y=4

那要是这种情况呢?

fun(*{'name':'wuxianfeng','age':18})  
# x=name
# y=age


那要是这种情况呢?

for a, *b in [(1, 2, 3), (4, 5, 6, 7)]:
    print(b) 



下面2个语句都对吗?对的话,a的值是啥

*a, = range(5)
*a  = range(5)


四、两个星号的解包

换个函数

def fun(x=1,y=2):
    print(f'x={x}')
    print(f'y={y}')


之前的测试都ok

如果是字典,你要传value进去呢

def fun(x=1,y=2):
    print(f'x={x}')
    print(f'y={y}')
    
fun(**{'x':'wuxianfeng','y':18})
# 等价于
fun(x='wuxianfeng',y=18)


具体你可以去看看函数的不定参数的定义和应用,此处不做更多解释

五、场景的应用

合并字典

d1 = {'x':1}
d2 = {'y':2}
d3 = {**d1,**d2}
d3  # {'x': 1, 'y': 2}

同样的list的合并也可以这样做

li1 = [1,2]
li2 = [3,4]
li3 = [*li1,*li2]
li3

zip是个有趣的内置函数

比如这样

li1 = ['a','b']
li2 = [1,2]
li = list(zip(li1,li2))
li # [('a', 1), ('b', 2)]
di = dict(zip(li1,li2))  # {'a': 1, 'b': 2}

# 如果要逆向呢? 
li1 = ['a','b']
li2 = [1,2]
result = zip(li1,li2)
print(list(zip(*result)))   # [('a', 'b'), (1, 2)]

回到正题,在selenium课程中,有这样一段

def find_element(self, by=By.ID, value=None) -> WebElement:
    pass
# 在后面项目课中的调用我们是这样做的
locator = 'id','ls_username'
driver.find_element(*locator) 
# 如果这样driver.find_element(locator)  显然报错在上面已经提到了。

↓ ↓ ↓ 加下方名片找我,直接拿源码还有案例 ↓ ↓ ↓

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/551871.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Lesson13---人工神经网络(2)

13 人工神经网络&#xff08;2&#xff09; 多层神经网络-非线性分类问题多层神经网络的损失函数不是凸函数&#xff0c;很难计算解析解通常采用梯度下降法&#xff0c;得到数据解&#xff0c;梯度下降法可以用来求解函数极值问题 批量梯度下降随机梯度下降小批量梯度下降 1…

[Nacos] Nacos Client获取所有服务和定时更新Client端的注册表 (三)

文章目录 1.Nacos Client获取所有服务1.1 Client如何获取所有服务1.2 Client获取服务方法getServices()详解 2.Nacos定时更新Client端的注册表2.1 Nacos和Eureka定时更新Client端的注册表的区别2.2 Client定时更新本地服务过程2.3 updateServiceNow方法解析2.4 定时更新本地注册…

DrissionPage学习(一)

一、下载适合mac环境的chromedriver.exe 1.查找chrome浏览的版本 方法二&#xff1a;查看chrome版本信息 2.确定版本后在下载chrome对应的chromedriver.exe 下载地址&#xff1a;http://chromedriver.storage.googleapis.com/index.html 3.在文件夹中找到下载的文件chro…

MyBatis-Plus or() equls() 连用的格式为 a AND (b OR c)

正确示范&#xff1a; userInterfaceQueryWrapper.and(qw -> qw .eq("status", UserInterfaceInfoStatusEnum.OFFLINE) .or() .eq("status", UserInterfaceInfoStatusEnum.TRYOUT));错误示范&#xff1a; userInterfaceQueryWrapper.eq("status&…

分布式项目10.jsonp 使用js中script的属性src进行服务器之间的访问

一般使用ajax来访问不同服务器的数据&#xff0c;可行吗&#xff1f; 做个实验&#xff1a; 第一步&#xff1a;在本服务器中使用ajax技术访问本服务器数据 <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>测试JSON跨域…

NFT游戏Mythical Beings将参加NFT Polygon 在线展会

Mythical Beings神秘生物是由Tarasca Art & Games 开发的基于区块链的卡牌收集游戏。游戏中每张卡牌所拥有的属性和背后的故事都是独一无二的&#xff0c;Mythical Beings不仅具有游戏属性&#xff0c;还兼具故事的传承。 作为一款跨链Polygon的NFT游戏&#xff0c;Mythic…

Transformer架构解析

1.Transformer架构图 本文主要来自&#xff1a;http://nlp.seas.harvard.edu/annotated-transformer/#hardware-and-schedule 论文地址: https://arxiv.org/pdf/1810.04805.pdf 1.1 Transformer模型的作用 基于seq2seq架构的transformer模型可以完成NLP领域研究的典型任务,…

ThinkPHP6模型中的获取器,修改器及搜索器的简单使用

ThinkPHP6模型中的获取器&#xff0c;修改器及搜索器的简单使用 1. 获取器2. 修改器3. 搜索器 1. 获取器 获取器的作用是对模型实例的&#xff08;原始&#xff09;数据做出自动处理。一个获取器对应模型的一个特殊方法&#xff08;该方法必须为public类型&#xff09;&#x…

MySQL(用户管理)

文章目录 1 用户1.1 用户信息1.2 创建用户1.3 删除用户1.4 修改用户密码 2 数据库的权限2.1 给用户授权2.2 回收权限 1 用户 1.1 用户信息 MySQL中的用户&#xff0c;都存储在系统数据库mysql的user表中 host&#xff1a; 表示这个用户可以从哪个主机登陆&#xff0c;如果是l…

GPT专业应用:如何让GPT策划方案

身为一名职场打工人&#xff0c;或多或少会面临需要写策划案的难题。 不管是策划一场线下活动&#xff0c;还是策划业务发展的方向&#xff1b; 甚至到生活中还需要策划婚礼&#xff0c;策划房屋装修&#xff0c;策划和朋友的聚会等等。那么如何快速积累经验&#xff0c;找准…

项目管理基础:什么是项目管理?

一、项目管理的缘起与发展 项目管理并非基础学科&#xff0c;它是人类在生产实践中不断的经验积累所总结归纳的一门学科&#xff0c;在人们不断的完善与修订下逐步形成了现有的项目管理知识体系。 项目经理是随着人们对项目管理要求的提升而逐渐分化出的一个专业职位&#xf…

SNAT与DNAT的应用

目录 一、SNAT概述 1.SNAT应用环境——局域网共享上网 2. SNAT工作原理 2.1未作SNAT转换时 2.2进行SNAT转换后 二、配置SNAT策略 1.开启IP路由转发 2.SNAT转换 3.模拟实验 3.1服务端 3.2网关服务器 3.3网关服务器设置iptables规则 3.4客户端 3.5实验结果 三、DNAT概…

Tauri应用开发(二):创建第一个Tauri应用

创建tauri应用 推荐参考官方文档&#xff1a;https://tauri.app/v1/guides/ 创建命令&#xff1a; npm create tauri-applatest&#x1f4a1;注意&#xff1a;请确保Node.js和Rust已经正确安装 在创建过程中&#xff0c;需要根据提示选择配置项。 主要配置有&#xff1a; 项目…

在Postman接口工具,脚本中发送请求(pm.sendRequest)

Postman的Collection(集合)/Folder(集合的子文件夹)/Request(请求)都有Pre-request script和Tests两个脚本区域, 分别可以在发送请求前和请求后使用脚本(基于Javascript实现各种操作) 在遇到有依赖的接口时,比如需要登录或者需要从前一个接口的结果中获取参数时,我们往往需要在…

vue+element实现美观大方好看的音乐网站,仿照咪咕音乐网

目录 一、前言 二、实现及效果图 1.效果图 2.项目结构、设计说明 3.顶部菜单 4.首页轮播图 5.歌单推荐 三、总结 一、前言 咪咕音乐网&#xff0c;最近看到其官网&#xff0c;第一感觉真的很美观大方&#xff0c;有被它惊艳到。所以作者忍不住做了一版仿照咪咕音乐的demo。…

庄懂的TA笔记(十七)<特效:屏幕UV + 屏幕扰动>

庄懂的TA笔记&#xff08;十七&#xff09;&#xff1c;特效&#xff1a;屏幕UV 屏幕扰动&#xff1e; 大纲&#xff1a; 目录 庄懂的TA笔记&#xff08;十七&#xff09;&#xff1c;特效&#xff1a;屏幕UV 屏幕扰动&#xff1e; 大纲&#xff1a; 正文&#xff1a; 一…

UNIX环境高级编程——线程控制

12.1 引言 本章讲解控制线程行为方面的详细内容&#xff0c;介绍线程属性和同步原语属性。 12.2 线程限制 12.3 线程属性 线程属性对象用pthread_attr_t结构表示&#xff0c;可以用这个结构修改线程默认属性&#xff0c;并把这些属性与创建的线程联系起来。 #include <p…

腾讯C++二面,全程2小时追问基础!

今天给大家分享星球一位同学腾讯面经&#xff0c;主要摘取了部分一二面经&#xff0c;然后部分问题我做了补充说明~ 星球原文&#xff1a;https://t.zsxq.com/0eO4O13HV&#xff0c;已获授权 一面 1、C11有哪些新特性&#xff0c;有哪些新关键字 2、C中结构体占多少字节&…

51单片机——I2C-EEPROM实验,小白讲解,相互学习

I2C介绍 I2C&#xff08;Inter&#xff0d;Integrated Circuit&#xff09;总线是由 PHILIPS 公司开发的两线式 串行总线&#xff0c;用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的 一种总线标准。它是同步通信的一种特殊形式&#xff0c;具有接口线少&#x…

【逆向工程核心原理:SEH】

SEH SEH是Windows操作系统提供的异常处理机制&#xff0c;在程序源代码中使用__ try、 __except、__finally关键字来具体实现。主要用在反调试中。 注&#xff1a; SEH与C中的try. catch 异常处理具有不同结构。从时间上看&#xff0c;与C的try、catch异常处理相比&#xff0…