当前位置:首页 > 数码 > 和的最全用法-把握Python的解包技巧 (“和”的用法)

和的最全用法-把握Python的解包技巧 (“和”的用法)

admin8个月前 (04-27)数码66

/target=_blankclass=infotextkey>Python中的*和**是两个弱小的符号,它们具备多种用途,包含解包参数、裁减序列、字典和汇合操作等。

本文引见这两个符号的各种用法,并提供具体的示例代码,协助更好地理解它们的性能。

1.解包参数

1.1解包位置参数

在函数定义中,*可以用来解包位置参数。这使得函数可以接受不定数量的位置参数,将它们打包成一个元组。

defadd(*args):result=0fornuminargs:result+=numreturnresultprint(add(1,2,3))#输入6

1.2解包关键字参数

**用于解包关键字参数,将它们打包成一个字典。

defperson_info(**kwargs):forkey,valueinkwargs.items():print(f"{key}:{value}")person_info(name="Alice",age=30,)#输入:#name:Alice#age:30#country:USA

2.裁减序列

2.1裁减列表

*可以用于裁减列表,将一个列表中的元素拆分后传递给另一个列表。

list1=[1,2,3]list2=[4,5,6]list1.extend(list2)print(list1)#输入[1,2,3,4,5,6]#经常使用*裁减列表list1=[1,2,3]list2=[4,5,6]list1=[*list1,*list2]print(list1)#输入[1,2,3,4,5,6]

2.2裁减字典

**可以用于裁减字典,将一个字典中的键值对拆分后传递给另一个字典。

dict1={"name":"Alice","age":30}dict2={"country":"USA"}dict1.update(dict2)print(dict1)#输入:{'name':'Alice','age':30,'country':'USA'}#经常使用**裁减字典dict1={"name":"Alice","age":30}dict2={"country":"USA"}dict1={**dict1,**dict2}print(dict1)#输入:{'name':'Alice','age':30,'country':'USA'}

3.函数参数中的*和**

3.1函数参数中的*

*可以用于将位置参数和关键字参数分隔开,从而指定只接受关键字参数。

defgreet(name,*,):print(f"{message},{name}!")greet("Alice")#输入"Hello,Alice!"

3.2函数参数中的**

**可以用于接纳恣意数量的关键字参数,这些参数将被打包成一个字典。

defperson_info(name,age,**kwargs):print(f"Name:{name}")print(f"Age:{age}")print("OtherInfo:")forkey,valueinkwargs.items():print(f"{key}:{value}")person_info(name="Alice",age=30,,)#输入:#Name:Alice#Age:30#OtherInfo:#country:USA#job:Engineer

4.解包操作

4.1解包元组

*用于解包元组中的元素。

fruits=("le","banana","cherry")a,b,c=fruitsprint(a,b,c)#输入"applebananacherry"

4.2解包字典

**用于解包字典中的键值对。

info={"name":"Alice","age":30}person_info(**info)#传递字典作为关键字参数#输入:#Name:Alice#Age:30

5.打包参数

5.1打包位置参数

*也可用于打包位置参数,将多个参数打包成一个元组。

defmultiply(*args):result=1fornuminargs:result*=numreturnresultnumbers=(2,3,4)print(multiply(*numbers))#输入24

5.2打包关键字参数

**用于打包关键字参数,将多个关键字参数打包成一个字典。

defprint_colors(**kwargs):forkey,valueinkwargs.items():print(f"{key}:{value}")colors={"color1":"red","color2":"blue","color3":"green"}print_colors(**colors)#传递字典作为关键字参数#输入:#color1:red#color2:blue#color3:green

6.初级运行

6.1经常使用*和**接受不定数量的参数

defadvanced_example(*args,**kwargs):forarginargs:print(arg)forkey,valueinkwargs.items():print(f"{key}:{value}")advanced_example(1,2,3,,age=30)#输入:#1#2#3#name:Alice#age:30

6.2函数签名和参数传递

*和**的经常使用关于构建通用函数和接纳不定数量参数的函数十分有用。经过正当经常使用这些性能,您可以增强函数的灵敏性和可重用性。

7.总结

*和**是Python中十分有用的符号,它们用于解包和打包参数,裁减序列和字典,以及在函数参数中接受不定数量的参数。这些性能使Python的函数愈加灵敏,并有助于编写更通用的代码。

把握Python的解包技巧

python参数,解包,变量!

其实没那么复杂

我个人理解 argv 中记录了执行脚本时 传进来的一些变量 其中第一个是脚本的名

你可以根据得到的参数做一些流程控制

脚本 内容如下:

from sys import argv

for i in range(len(argv)):

print argv[i] #输出参数

在cmd中执行脚本,如下:

毕业生必看Python爬虫上手技巧

Python快速上手的7大技巧

Python快速上手爬虫的7大技巧

1、基本抓取网页

get方法

post方法

2、使用代理IP

在开发爬虫过程中经常会遇到IP被封掉的情况,这时就需要用到

代理IP;

在urllib 2包中有Proxy Handler类, 通过此类可以设置代理

访问网页,如下代码片段:

3、Cookies处理

cookies是某些网站为了辨别用户身份、进行session跟踪而

储存在用户本地终端上的数据(通常经过加密) , python提供了

cookie lib模块用于处理cookies, cookie lib模块的主要作

用是提供可存储cookie的对象, 以便于与urllib 2模块配合使

用来访问Internet资源。

代码片段:

关键在于Cookie Jar() , 它用于管理HTTP cookie值、存储

HTTP请求生成的cookie、向传出的HTTP请求添加cookie

的对象。整个cookie都存储在内存中, 对Cookie Jar实例进

行废品回收后cookie也将丢失, 所有过程都不需要单独去操作

手动添加cookie:

4、伪装成浏览器

某些网站反感爬虫的到访,于是对爬虫一律拒绝请求。所以用

urllib 2直接访问网站经常会出现HTTP Error 403:

Forbidden的情况。

对有些header要特别留意, Server端会针对这些header

做检查:

-Agent有些Server或Proxy会检查该值, 用来判

断是否是浏览器发起的Request。

-Type在使用REST接口时, Server会检查该

值, 用来确定HTTP Body中的内容该怎样解析。

这时可以通过修改http包中的header来实现, 代码片段如下

5、验证码的处理

对于一些简单的验证码,可以进行简单的识别。我们只进行过一

些简单的验证码识别,但是有些反人类的验证码,比如

,可以通过打码平台进行人工打码,当然这是要付费的。

6、gzip压缩

有没有遇到过某些网页,不论怎么转码都是一团乱码。哈哈,那

说明你还不知道许多web服务具有发送压缩数据的能力, 这可

以将网络线路上传输的大量数据消减60%以上。这尤其适用于

XML web服务, 因为XML数据的压缩率可以很高。

但是一般服务器不会为你发送压缩数据,除非你告诉服务器你可

以处理压缩数据。

于是需要这样修改代码:

这是关键:创建Request对象, 添加一个Accept-

encoding头信息告诉服务器你能接受gzip压缩数据。

然后就是解压缩数据:

7、多线程并发抓取

单线程太慢的话,就需要多线程了,这里给个简单的线程池模板

这个程序只是简单地打印了1-10,但是可以看出是并发的。

虽然说Python的多线程很鸡肋, 但是对于爬虫这种网络频繁型

,还是能一定程度提高效率的。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: Python

“和的最全用法-把握Python的解包技巧 (“和”的用法)” 的相关文章

Python中的LEGB规则 (python怎样打开)

Python中的LEGB规则 (python怎样打开)

Python 中的 LEGB 规则决定了变量和函数的作用域解析顺序。它代表了四个作用域层级: 局部作用域 闭包函数外的函数 全局作用域 内置作用域...

b-b-个入门建议!-Python-技术书籍推荐-附赠-11 (b+b+b等于什么)

b-b-个入门建议!-Python-技术书籍推荐-附赠-11 (b+b+b等于什么)

近年来,Python 持续火爆,越来越多的人开始入门学习 Python。RealPython 作为最受好评的 Python 学习网站,拥有超百万的浏览量,以下是 RealPython 的开发者给...

处置日常义务的终极工具!-Python-文件读写实战 (处置行为是什么意思)

处置日常义务的终极工具!-Python-文件读写实战 (处置行为是什么意思)

/target=_blankclass=infotextkey>Python文件的读写操作时,有很多须要思考的细节,这包含文件关上形式、读取和写入数据的方法、意外处置等。 在本文中,...

惰性求值和lambda表达式的强大组合-Python高级技巧 (惰性求值和逻辑短路)

惰性求值和lambda表达式的强大组合-Python高级技巧 (惰性求值和逻辑短路)

Lambda 表达式 在 Python 中,Lambda 表达式是一个匿名函数,它可以在需要函数对象的地方使用。Lambda 表达式的语法如下: lambda arguments: exp...

一份收藏者必备清单-100个精选Python库 (收藏者的心态)

一份收藏者必备清单-100个精选Python库 (收藏者的心态)

/target=_blankclass=infotextkey>Python为啥这么火,这么多人学,就是由于繁难好学,性能弱小,整个社区十分生动,资料很多。而且这言语触及了方方面面,比如智能...

轻松把握多线程和多进程-Python编程进阶 (多线是什么意思)

轻松把握多线程和多进程-Python编程进阶 (多线是什么意思)

1、简介 咱们将讨论如何应用/target=_blankclass=infotextkey>Python口头多线程和多进程义务。它们提供了在单个进程或多个进程之间口头并发操作的方法。并...

生成-UUID-操作-Python-齐全指南-格局和经常出现疑问 (生成uuid java)

生成-UUID-操作-Python-齐全指南-格局和经常出现疑问 (生成uuid java)

UUID(UniversallyUniqueIdentifier,通用惟一标识符)是一种全局惟一标识符生成形式,用于创立举世无双的标识符。/target=_blankclass=infotextk...

使用Python进行数据分析的步骤 (使用pycharm)

使用Python进行数据分析的步骤 (使用pycharm)

简介 Python 是一种动态的、面向对象的脚本语言,以其简单性和易读性而闻名。它广泛用于数据分析,因为它具有强大的库,兼容开源大数据平台 Hadoop,并且拥有众多优势,使其成为流行的编...