纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

Python函数传递问题 浅谈Python中的函数传递问题

雷学委   2021-11-18 我要评论
想了解浅谈Python中的函数传递问题的相关内容吗雷学委在本文为您仔细讲解Python函数传递问题的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Python函数,Python函数传递下面大家一起来学习吧

函数参数如何传递

key-value方式传递参数:

下面是非常常见的传递方式参数名写直白写死了:

def show_info(name, title):
    print("姓名为:",name)
    print("职称为:",title)

我们在使用的时候可以用以下的方式:

show_info('雷学委', '大学生Python学习社区长')
show_info(name='雷学委', title='持续学习协会会长')

可以写成这样使用两个*这样非常灵活但是缺点也是明显的(结构灵活有时候需要判断是否漏传直接取容易出错)

def show_info_v2(**kv_dict):
    print("姓名为:", kv_dict['name'])
    print("职称为:", kv_dict['title'])
show_info_v2(name='雷学委', title='大学生Python学习社区长')

下面是效果看起来一样的

在这里插入图片描述

动态长度参数传递

通常使用*加参数名

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/24 11:39 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : func_call.py
# @Project : hello
def show_info(name, title):
    print("姓名为:", name)
    print("职称为:", title)
show_info('雷学委', '大学生Python学习社区区长')
show_info(name='雷学委', title='持续学习协会会长')
def show_info_v2(name, title, *info):
    print("姓名为:", name)
    print("职称为:", title)
    print("其他评价:", info)
show_info_v2('雷学委', '大学生Python学习社区区长', "热爱技术", "热爱生活")

运行效果如下:

在这里插入图片描述

参数是否会被函数攥改?

我们看看下面的程序即可:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/24 11:39 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : func_call.py
# @Project : hello
def compute_v1(list):
    sum = 0
    for x in list:
        sum += x
    list = list + [sum]
    print("新地址:", id(list))
    return sum
def compute_v2(list):
    sum = 0
    for x in list:
        sum += x
    list[0] = list[0] * 100
    return sum
_list = [1, 2, 3, 4, 5]
print("调用计算函数v1之前:", _list)
print("调用计算函数v1之前内存地址:", id(_list))
print(compute_v1(_list))
print("调用计算函数v1之后:", _list)
print("调用计算函数v1之后内存地址:", id(_list))
_list = [1, 2, 3, 4, 5]
print("调用计算函数v2之前:", _list)
print("调用计算函数v2之前内存地址:", id(_list))
print(compute_v2(_list))
print("调用计算函数v2之后:", _list)
print("调用计算函数v2之后内存地址:", id(_list))

这里两个compute函数一个修改参数引用地址一个并没有修改参数引用而是修改了引用内存空间的关联地址(一个变量)的值

可以说它们都成功了但是外面的_list 的地址是任何时候都不会被修改的除非赋值新地址(也就是在调用v2之前重新复制那次)

下面是运行结果:

屏幕快照 2021-10-31 下午10.34.46.png

总结

本篇文章就到这里了希望能够给你带来帮助也希望您能够多多关注的更多内容!


相关文章

猜您喜欢

  • Docker搭建RabbitMq集群 Docker搭建RabbitMq的普通集群和镜像集群的详细操作

    想了解Docker搭建RabbitMq的普通集群和镜像集群的详细操作的相关内容吗我什么时候能变强啊!在本文为您仔细讲解Docker搭建RabbitMq集群的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Docker搭建RabbitMq集群,Docker搭建RabbitMq镜像集群下面大家一起来学习吧..
  • Java 排序算法 Java中七种排序算法总结分析

    想了解Java中七种排序算法总结分析的相关内容吗dhdhdhdhg在本文为您仔细讲解Java 排序算法的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Java,排序算法,Java,数据结构下面大家一起来学习吧..

网友评论

Copyright 2020 www.fresh-weather.com 【世纪下载站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式