python中函数传参详解

yizhihongxing

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日

相关文章

  • 10款最好的Python开发编辑器

    10款最好的Python开发编辑器攻略 1. PyCharm PyCharm 是 JetBrains 开发的,功能强大的 Python 开发工具。它有很多的语法高亮、代码自动补全、调试等功能。其专业版本的功能,还包括 Flask、Django 等 Web 框架的支持以及代码重构、版本控制等功能。 示例说明: 可以使用 PyCharm 进行 Flask Web…

    python 2023年5月18日
    00
  • python 中open文件路径的选择问题解析

    在Python中,使用open函数打开文件时,需要指定文件的路径。文件路径的选择是一个重要的问题,不同的路径选择会影响程序的运行效果。本文将详细讲解Python中open文件路径的选择问题,包括两个示例。 文件路径的选择 在Python中,打开文件时,需要指定文件的路径。文件路径可以是绝对路径或相对路径。绝对路径是指文件在文件系统中的完整路径,相对路径是指文…

    python 2023年5月15日
    00
  • python 实现数组list 添加、修改、删除的方法

    以下是详细讲解“Python实现数组List添加、修改、删除的方法”的完整攻略。 在Python中,可以使用List来实现数组的功能。本文将介绍List的添加、修改、删除方法,并提供两个示例。 添加元素 可以使用append()方法向List中添加元素。例如: lst = [1, 2, 3] lst.append(4) print(lst) 上述代码演示了如…

    python 2023年5月13日
    00
  • python解析含有重复key的json方法

    当我们使用 Python 的 json 模块解析一个包含重复键值的 JSON 数据时,由于字典不能包含相同的键,会抛出异常。为了正确解析含有重复键的 JSON 数据,我们需要使用一些额外的 Python 包,或者自定义解析方法。 以下是一些处理重复键的 JSON 数据方法: 使用Python包 ijson 进行重复键的JSON解析 ijson 是一个高效的 …

    python 2023年6月3日
    00
  • Python 字符串换行的多种方式

    Python 字符串换行的多种方式 在 Python 中,如果我们需要将一长串字符串拆分成多行显示,就需要使用到字符串换行。下面将介绍 Python 中实现字符串换行的几种方式。 ## 使用反斜杠 \ 在 Python 中,可以使用反斜杠将一行的代码拆分成多行。比如: msg = "这是一段非常长的字符串,但是我想拆分成多行显示,\ 这样可以让代码…

    python 2023年6月3日
    00
  • Python iter()函数用法实例分析

    Python iter()函数用法实例分析 一、iter()函数概述 iter()函数是Python内置函数之一,用于返回一个迭代器对象,其作用是使一个对象可以像序列一样被迭代。 下面是iter()函数的基本语法: iter(obj, sentinel) 其中obj代表需要进行迭代操作的对象,sentinel参数可选,通常用于指定迭代结束的条件。 二、ite…

    python 2023年5月20日
    00
  • Python中的 No Module named ***问题及解决

    Python中的NoModuleNamed***问题及解决 在Python编程中,我们经常会遇到”NoModuleNamed”的问题,这通常是由于Python无法找到所需模块或包而起的。本文将详细讲解Python中的NoModuleNamed问题及解决,包括问题的原因、解决方法和两个示例。 问题原因 在Python中,当我们使用import语句导入模块或包时…

    python 2023年5月13日
    00
  • Python爬取雪中悍刀行弹幕分析并可视化详程

    下面是“Python爬取雪中悍刀行弹幕分析并可视化详程”的完整攻略。 1. 网页爬取 我们可以使用Python中的requests库来下载网页源代码,并使用beautifulsoup库来解析网页。 import requests from bs4 import BeautifulSoup url = ‘https://www.bilibili.com/vid…

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