python中函数的序列传参,列表拆解传参、字典拆解传参

简介: python中函数的序列传参,列表拆解传参、字典拆解传参

一、函数的列表传参



列表举例 [“a”,”b”,”c”]

其实在使用列表传参的时候比较简单,只需要将实际的列表作为参数传入到调用的函数中的时候,在列表变量前加上一个星号*即可把某个列表拆分成多个参数传入到自定义函数中。如果调用的时候不加*那么多把列表看成一个整体传入。

举例:

list2=["a","b","c"]

def P2(*s1):

   for v in s1:

       print("<"+str(v)+">")

   pass


P2(*list2)


列表拆解传参的注意事项

注意:如果在自定义函数的时候,定义的参数前没有加*,那么我们在调用这个函数的时候,也不能在列表参数值前加*。其实在这里,我们如果想要将列表拆解成多个参数进行传入的时候,我们必须就是要定义一个可变参数,而定义可变参数的时候,我们必须要加上一个*

本质:列表拆解传入的时候 ,自定义函数的参数个数必须要支持实际拆解传参调用函数。


二、函数的字典传参



类似于列表拆解传参,只不过在传入的参数前面加上两个*,也即使说使用双星号**

举例:

dic1={"name":"老刘","work":"程序员","微信公众号":"编程创造城市"}

def D1(**d):

   print(d)


D1(**dic1)

注意:在定义函数的时候使用**进行定义的话,我们必须在调用的时候也要对传入的字典加上**


同样类似于列表的去星号方式

在定义字典作为参数的时候,如果定义的参数没有**,那么在调用这个函数的时候,也不要加上**,否则直接报错。


三、知识总结:



函数的序列传参


1.列表的拆解传参,可以使用*,也可以省略,具体要看传入的参数的数量作为本质条件。

2.掌握字典的拆解传参,使用**,具体使用方法类似于列表


本节源代码

#对比可变参数与列表传参的区别
#可变参数的情况
# def P(*s1):
#     for v in s1:
#         print("<"+str(v)+">")
#     pass
#
# list1=["a","b","c"]
#
# P(list1,"123","ggg")
#拆解列表传参的情况
# list2=["a","b","c"]
# def P2(*s1):
#     for v in s1:
#         print("<"+str(v)+">")
#     pass
#
# P2(*list2)
#
# #定义的时候不加星号的情况
# list3=["a","b","c"]
# def P3(s1):
#     for v in s1:
#         print("【"+str(v)+"】")
#
# P3(list3)
#定义参数数量和列表中的值的数量相同的情况
# list4=["a","b","c"]
# def P4(s1,s2,s3):
#     print("#"+s1+"#")
#     print("#" + s2 + "#")
#     print("#" + s3 + "#")
#
# P4(*list4)
#自定义字典的传入输出
# dic1={"name":"老刘","work":"程序员","微信公众号":"编程创造城市"}
# def D1(**d):
#     for s1 in d.items():
#         print(s1[0]+"="+s1[1])
#
# D1(**dic1)
dic2={"name":"老刘","work":"程序员","微信公众号":"编程创造城市"}
def D2(d):
    for s1 in d.items():
        print(s1[0]+"="+s1[1])
D2(dic2)

执行效果(注释的代码将没有显示效果):

name=老刘
work=程序员
微信公众号=编程创造城市
相关文章
|
14天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
26 3
|
18天前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
28 2
|
29天前
|
索引 Python
Python列表
Python列表。
48 8
|
1月前
|
C语言 Python
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
35 9
|
3天前
|
存储 人工智能 Python
[oeasy]python061_如何接收输入_input函数_字符串_str_容器_ 输入输出
本文介绍了Python中如何使用`input()`函数接收用户输入。`input()`函数可以从标准输入流获取字符串,并将其赋值给变量。通过键盘输入的值可以实时赋予变量,实现动态输入。为了更好地理解其用法,文中通过实例演示了如何接收用户输入并存储在变量中,还介绍了`input()`函数的参数`prompt`,用于提供输入提示信息。最后总结了`input()`函数的核心功能及其应用场景。更多内容可参考蓝桥、GitHub和Gitee上的相关教程。
7 0
|
1月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
1月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
1月前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
116 80
|
22天前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
40 14