温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python元组以及函数参数的解包方法

发布时间:2021-07-09 09:17:14 来源:亿速云 阅读:185 作者:chen 栏目:编程语言

本篇内容介绍了“python元组以及函数参数的解包方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

元组解包

# 创建元组的方式
my_tuple = (1,2,3,4,5)

# 如果元组不是空元组,它里边至少要有一个逗号
my_tuple = 40,
my_tuple = 10 , 20 , 30 , 40

# 解包指就是将元组当中每一个元素都依次赋值给一个变量
a,b,c,d = my_tuple

# 交换a 和 b的值,这时我们就可以利用元组的解包,注意右边的表达式,实际上是创建了一个元组
a = 100
b = 300
a , b = b , a
my_tuple = 10 , 20 , 30 , 40

# 在对一个元组进行解包时,变量的数量必须和元组中的元素的数量一致
# 使用*,也可以在变量前边添加一个*,这样变量将会获取元组中所有剩余的元素
# 不仅是元组,还有list以及字符串等序列也可以解构

a , b , *c = my_tuple
a , *b , c = my_tuple
*a , b , c = my_tuple
a , b , *c = [1,2,3,4,5,6,7]
a , b , *c = 'hello world'

# 不能同时出现两个或以上的*变量
 *a , *b , c = my_tuple  # SyntaxError: two starred expressions in assignment

对于函数可变参数的装包,解包

函数可变参数把所有参数封装成一个元组,而不是列表

def halo(*a):
    print(a)

halo(1,2,2,3,5,6,8,96,8)

#可变参数不是必须写在最后,但是注意,带*的参数后的所有参数,必须以关键字参数的形式传递(通过参数名指定参数)
# 第一个参数给a,剩下的位置参数给b的元组,c必须使用关键字参数
 def fn2(a,*b,c):
     print('a =',a)
     print('b =',b)
     print('c =',c)

fn2(1,2,3,4,5,c=6)

# 如果在形参的开头直接写一个*,则要求我们的所有的参数必须以关键字参数的形式传递
def fn2(*,a,b,c):
    print('a =',a)
    print('b =',b)
    print('c =',c)
fn2(a=3,b=4,c=5)

# *形参只能接收位置参数,而不能接收关键字参数, **形参可以接收其他的关键字参数,它会将这些参数统一保存到一个字典中,字典的key就是参数的名字,字典的value就是参数的值
# **形参只能有一个,并且必须写在所有参数的最后
def fn3(b,c,**a) :
    print('a =',a,type(a))
    print('b =',b)
    print('c =',c)

fn3(b=1,d=2,c=3,e=10,f=20)

# 参数的解包(拆包)
def fn4(a,b,c):
    print('a =',a)
    print('b =',b)
    print('c =',c)

# 创建一个元组
t = (10,20,30)

# 传递实参时,也可以在序列类型的实参数前添加星号,这样他会自动将序列中的元素依次作为参数传递
# 这里要求序列中元素的个数必须和形参的个数的一致
 fn4(*t)    

# 创建一个字典
d = {'a':100,'b':200,'c':300}
# 通过 **来对一个字典进行解包操作
fn4(**d)     # 相当于使用参数名指定实参   fn4(a=100,b=200,c=300)

“python元组以及函数参数的解包方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI