python中函数传参详解

Python中函数传参详解

在Python中,函数是非常重要的,而理解函数传参的方式和机制是学好Python的一个重要部分。因此,在这篇文章中,我们将会详细讲解Python的函数传参方式。

传递不可变对象

在Python中,不可变对象包括整数,浮点数,字符串,元组等。在函数调用时,如果传递的是不可变对象,则实参在函数中被修改不会影响到原来的实参。这是因为实参和形参在函数执行时分别指向的是两个不同的对象。

下面是一个例子:

def change_number(num):
    num += 1
    print("函数内修改后的num值为:", num)

num = 10
change_number(num)
print("函数调用之后num值仍为:", num)

输出为:

函数内修改后的num值为: 11
函数调用之后num值仍为: 10

从上面的输出可以看出,尽管函数内部对传入的参数num进行了修改,但在函数调用之后,变量num的值并没有被修改。

传递可变对象

如果传递的是可变对象,如列表(list)或字典(dict),因为它们是可变对象,所以在函数中修改它们会直接影响到原来的实参,因为实参和形参在函数执行时指向的是同一个对象。

下面是一个例子:

def change_list(alist):
    alist.append(4)
    print("函数内添加后的alist列表为:", alist)

alist = [1, 2, 3]
change_list(alist)
print("函数调用之后alist列表变为:", alist)

输出为:

函数内添加后的alist列表为: [1, 2, 3, 4]
函数调用之后alist列表变为: [1, 2, 3, 4]

从上面的输出可以看出,函数内部对传入的参数alist进行了添加元素的操作,但在函数调用之后,变量alist的值也随之被修改。

传递关键字参数

在Python中,函数支持关键字参数。关键字参数是通过指定参数名称来传递参数的,这些参数的顺序并不重要。

下面是一个例子:

def print_student_info(name, age, gender):
    print("姓名:", name)
    print("年龄:", age)
    print("性别:", gender)

print_student_info('小明', 18, '男')
print_student_info(gender='女', name='小芳', age=20)

输出为:

姓名: 小明
年龄: 18
性别: 男
姓名: 小芳
年龄: 20
性别: 女

从上面的输出可以看出,第一次函数调用时传递了非关键字参数,第二次函数调用时则通过指定参数名来传递参数,不过两次调用结果是一样的。

传递不定长参数

在Python中,函数还支持传递不定长参数的方式,包括可变数量的位置参数和可变数量的关键字参数。

可变数量的位置参数

可变数量的位置参数是通过在形参前加上一个星号(*)来指定的,它允许函数接收任意数量的位置参数,并以元组的形式进行处理。

下面是一个例子:

def print_args(*args):
    for arg in args:
        print(arg, end=' ')
    print()

print_args(1, 2, 3)
print_args('a', 'b', 'c', 'd')

输出为:

1 2 3 
a b c d 

从上面的输出可以看出,通过在函数定义时使用可变数量的位置参数,可以使函数接收任意数量的位置参数,并且将这些参数以元组的形式进行处理。

可变数量的关键字参数

可变数量的关键字参数是通过在形参前加上两个星号(**)来指定的,它允许函数接收任意数量的关键字参数,并以字典的形式进行处理。

下面是一个例子:

def print_kwargs(**kwargs):
    for key, value in kwargs.items():
        print("{0} = {1}".format(key, value))

print_kwargs(name='小明', age=18)
print_kwargs(city='北京', school='清华大学', major='计算机科学')

输出为:

name = 小明
age = 18
city = 北京
school = 清华大学
major = 计算机科学

从上面的输出可以看出,通过在函数定义时使用可变数量的关键字参数,可以使函数接收任意数量的关键字参数,并且将这些参数以字典的形式进行处理。

小结

在本篇文章中,我们详细讲解了Python中函数传递参数的方式,包括传递不可变对象、传递可变对象、传递关键字参数、传递不定长参数等几种方式,并给出了多个示例。希望这篇文章可以帮助大家更好地理解Python中的函数传参方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中函数传参详解 - Python技术站

(0)
上一篇 2023年6月5日
下一篇 2023年6月5日

相关文章

  • Python办公自动化解决world文件批量转换

    由于本题目的内容较为复杂,我们需要进行较为详细的讲解。为了方便阅读,将整理出目录: 前置条件 安装Python-docx模块 解析word文件 转换word文件 实战一:word批量转txt 实战二:word批量转pdf 总结 1. 前置条件 在进行Python办公自动化的编写之前,需要具备以下条件: Python3.x环境 用于编写代码的编辑器或IDE 安…

    python 2023年6月3日
    00
  • Python正则表达式使用经典实例

    下面是关于“Python正则表达式使用经典实例”的完整攻略。 1. 正则表达式简介 正则表达式是匹配字符串的一种工具,它具有强大的匹配能力和灵活的操作方式。在Python中,使用re模块可以实现正则表达式的功能。 2. 实例一:匹配邮箱地址 假设我们需要从一个文本中提取出所有的邮箱地址,可以使用正则表达式来实现。 先来看一个简单的正则表达式[a-zA-Z0-…

    python 2023年6月3日
    00
  • 详解Python map函数及Python map()函数的用法

    详解Python map函数及Python map()函数的用法 什么是Python map函数? map()函数是Python中内置的高阶函数之一,这个函数的作用是将一个或多个可迭代对象的元素映射(转换)为新的可迭代对象。 map()函数的语法格式 map(function, iterable, …) function:可接受一个或多个输入,并将其转换…

    python 2023年5月14日
    00
  • python实现在一个画布上画多个子图

    实现在一个画布上画多个子图,可以通过matplotlib库中的subplot()函数来实现。subplot()函数可以在一个画布上创建子图,根据网格的行数、列数和子图编号来定位子图的位置。 步骤如下: 1.导入相关的库文件 首先需要导入matplotlib库和numpy库。其中numpy库用于生成随机数。 import matplotlib.pyplot a…

    python 2023年5月19日
    00
  • Python任务自动化工具tox使用教程

    Python任务自动化工具tox使用教程 什么是tox tox是一个用于自动化测试、构建、打包Python项目的工具,它和pytest、nose、unittest等测试框架结合使用,可以更加方便的进行项目开发、测试和部署。tox使用tox.ini文件来进行配置,在tox.ini文件中可以定义需要测试的Python版本、依赖关系、测试命令等内容。 安装tox …

    python 2023年6月6日
    00
  • python subprocess 杀掉全部派生的子进程方法

    好的。首先需要了解一些基本概念: 进程:操作系统中正在运行的程序实例。 子进程:由父进程启动的新进程。 Python中,可以使用subprocess模块创建新的进程,例如: import subprocess process = subprocess.Popen([‘ls’, ‘-l’]) 上述代码启动了一个ls -l命令,返回值为一个Popen对象,该对象…

    python 2023年6月2日
    00
  • Python爬虫之对CSDN榜单进行分析

    Python爬虫之对CSDN榜单进行分析 1. 爬取CSDN榜单数据 首先,我们需要利用Python爬虫获取CSDN榜单数据。具体步骤如下: 安装所需的库:requests、BeautifulSoup。 pip install requests pip install BeautifulSoup4 确定爬取的目标链接,并利用requests库发送GET请求获…

    python 2023年5月14日
    00
  • Python 通过pip安装Django详细介绍

    下面给出Python通过pip安装Django的完整攻略,包含以下几个步骤: 步骤一:检查Python是否已经安装 在安装Django之前,我们需要确认Python是否已经安装。可以通过在终端中输入以下命令检查Python是否已经安装: python –version 如果已经安装,则会显示Python的版本号。如果没有显示版本号,需要先安装Python。…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部