【Python】函数进阶(上)

news2024/9/20 13:11:24

本篇文章将讲解函数进阶的知识:

(1)函数的补充

(2)函数名是什么

(3)返回值和print

(4)函数的作用域

1、函数的补充

(1)参数内存地址相关

如何查某个值在内存中的地址?

方法:id(数据类型)。返回值是数据类型在内存中地址的十进制表示。

代码示例:

注意:当多个数据内存地址相同时,说明它们共用同一块内存。

记住一句话:调用函数时,函数传参传的是内存地址。

代码示例:

Python参数传递的是地址,这一特征有两个好处:

(1)节省内存

(2)对于可变类型且函数中修改的是可变类型元素中的内容,所有的地方都会修改。(即函数的参数是可变类型,且在函数内部只能对参数内部元素修改)

可变类型:列表、集合、字典。

代码示例:

其它语言传参:传的是对实际参数拷贝一份再传给形参。

如果想在Python中也要用这种方法可以这样做,以下面代码为例:

代码示例:

(2)函数的返回值是内存地址

代码示例:

 上述代码执行过程:

(1)执行func函数

(2)data=[11,22,33]创建一块内存区域,内部存储【11,22,33】,data变量指向这块内存地址

(3)return  data返回data指向的内存地址。

(4)v1接收返回值,所以v1和data都指向【11,22,33】的内存地址。(两个变量指向此内存,引用计数器为2)。

(5)当函数执行完毕之后,函数内部的变量都会被释放(即删除data变量,内存地址的引用计数器减1),所以,最终v1指向函数内部创建的那块内存地址。

注意:在上面的示例中,若多次执行func(),则每次fun()返回的地址都是不一样的。

但是如果data是字符串类型的数据或整型的数据时,多次执行func(),每次返回data的地址都是一样的,因为Python内部有缓存和驻留机制。

(3)动态参数

动态参数,定义函数时,在形参位置用*或**可以接任意个参数。

代码示例:

在定义函数时可以用*和**,其实在执行函数时(即调用函数时)也可以用*和**。

1))形参固定,实参用*和**。

代码示例:

2))形参用*和**,实参用*和**

代码示例:

值得注意的是,按照这个格式func(*[11,22],**{"a1":1,"a2":666}),将数据传递给args和kwargs时,数据是会重新拷贝一份的,可理解为内部循环每个元素并设置到args和kwargs中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2058079.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法专题】滑动窗口类

个人主页:CSDN_小八哥向前冲~ 所属专栏:算法基础入门 目录 长度最小的子数组 无重复字符的最长子串 最大连续1的个数 将x减到0的最小操作数 水果成篮 找到字符串中所有字母异位词 最小覆盖字串 长度最小的子数组 题目:【LeetCode】长度…

Python生成432Hz音频

使用 numpy 来生成信号, 使用 matplotlib 可视化信号, 使用 sounddevice 播放声音。 以下生成和播放 432 Hz 的正弦波信号: import numpy as np import sounddevice as sd import matplotlib.pyplot as plt# 生成单音函数 def generate_to…

订单完工数量超过了最大可完工数量

本次完工将造成订单YWS-24070027产出实际完工数量达到了6093.000000000,超过了最大可完工数量5000.000000000 一个成品入库单被它们玩坏了。生产不知道生产了什么。PMC不知道要入库什么。鸡同鸭天天开会之后结果就是单据重复的开立,删除,开立…

C++ TinyWebServer项目总结(5. Linux网络编程基础API)

还是给我的语雀文档打个广告: 《5. C TinyWebServer项目总结(5. Linux网络编程基础API)》我的文章都是先在语雀里记录的,然后再同步发送到CSDN上,有些格式问题实在是懒得改了,可能会导致大家看的不舒服&…

自行车制造5G智能工厂工业物联数字孪生平台,推进制造业数字化

在当今这个日新月异的数字化时代,制造业正经历着前所未有的变革,自行车制造5G智能工厂工业物联数字孪生平台的兴起,无疑是这场转型浪潮中一股强劲力量。自行车制造5G智能工厂工业物联数字孪生平台的成功应用,不仅仅是技术上的突破…

代码随想录DAY21 - 二叉树 - 08/20

目录 修建二叉搜索树 题干 思路和代码 递归法 迭代法 将有序数组转化为平衡二叉搜索树 题干 思路和代码 递归法 递归优化 迭代法 把二叉搜索树转换为累加树 题干 思路和代码 递归法 迭代法 修建二叉搜索树 题干 题目:给你二叉搜索树的根节点 root …

数据结构【顺序结构二叉树:堆】(1)

​​​​​​​ 🌟个人主页:落叶 目录 ​ 🔥树的概念与结构​​​​​​​ 🔥树的表⽰ 🔥孩⼦兄弟表⽰法: 🔥树形结构实际运⽤场景 🔥⼆叉树 🔥概念与结构 &…

day4JS-数组

1. 什么是数组 数组是值的有序集合。每个值叫做一个元素。每个元素在数组中有一个位置, 以数字表示,称为索引 (有时也称为下标)。数组的元素可以是任何类型。数组索引从 0 开始,数组最大能容纳 4294967295 个元素。 2. 数组的声明与使用 2.1 使用字面量的方式声明数组 语法…

Minio web控制台实现授权管理

启动minio ./minio server /data01/aidacp/apps/minio/data --config-dir /data01/aidacp/apps/minio/conf --address 127.0.0.1:19090 --console-address 127.0.0.1:19091 &WARNING: Detected Linux kernel version older than 4.0.0 release, there are some known pote…

建设项目跟踪与展示系统

这是在翻旧文件时翻到的16年写的一个项目 建设项目跟踪与展示系统 建设方案 一、系统建设目的及意义 建设工程项目进度控制的最终目的是确保建设项目按预定的时间完成。能否在预定的时间内交付使用,直接影响到投资效益。为解决施工组织过程中存在问题,…

PyTorch深度学习实战(25)—— 使用向量化思想解决实际问题

本文将实际应用向量化思想解决深度学习中的几个经典问题,读者可以在这些示例中进一步领悟向量化思想和高级索引思想。 1. Box_IoU Box_IoU是目标检测任务中最基本的评价指标。简单来说,Box_IoU就是模型预测的检测结果框(predicted bbox)与原始标记框(ground truth)之间的…

企业级Nginx源码安装及其实战讲解

一:web服务基础介绍 1.1Web服务介绍 Apache 经典的 Web 服务端 Apache起初由美国的伊利诺伊大学香槟分校的国家超级计算机应用中心开发 目前经历了两大版本分别是1.X和2.X 其可以通过编译安装实现特定的功能 Apache prefork 模型 预派生模式,有一个…

[C++进阶]map和set

一、关联式容器 STL中的部分容器,比如:vector、list、deque、forward_list(C11)等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身。 那什么是关联式容器?它与序列式容器…

2.复杂度分析

2.1 算法效率评估 在算法设计中,我们先后追求以下两个层面的目标。 找到问题解法:算法需要在规定的输入范围内可靠地求得问题的正确解。寻求最优解法:同一个问题可能存在多种解法,我们希望找到尽可能高效的算法。 也就是说&a…

JavaScript_7_练习:随机抽奖案例

效果图 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>练习&#xff1a;随机抽奖案例</tit…

做谷歌seo如何选择好的服务器?

做谷歌seo如何选择好的服务器&#xff0c;如果你选择自托管平台&#xff0c;那么服务器的选择就非常关键了&#xff0c;服务器的好与坏影响着你的网站的表现&#xff0c;所以选择服务器要慎重。以下是一些建议&#xff0c;帮你做出明智的选择&#xff1a; 安全性&#xff1a;安…

Python Web框架 Django学习记录:1 项目安装,启动

Windows上学习Django # 创建一个虚拟环境 python -m venv tutorial-env# 激活虚拟环境 tutorial-env\Scripts\activate# 安装Django py -m pip install Django# 查看Django版本 py -m django --version# 使用脚手架创建一个项目 django-admin startproject mysite# 启动项目 cd…

linux出现sql密码被忘记的解决方法

目录 前言正文 前言 此处放置在运维篇章&#xff0c;对应sql的修改密码&#xff0c;推荐阅读&#xff1a;修改sql密码&#xff08;涵盖多个版本&#xff09; 如果补充Sql的基本知识&#xff0c;推荐阅读&#xff1a;Mysql底层原理详细剖析常见面试题&#xff08;全&#xff0…

git本地仓库同步到远程仓库

整个过程分为如下几步&#xff1a; 1、本地仓库的创建 2、远程仓库的创建 3、远程仓库添加key 4、同步本地仓库到远程仓库 1、本地仓库的创建&#xff1a; 使用如下代码创建本地仓库&#xff1a; echo "# test" >> README.md git init git add README.md …

shell脚本的编写规范和变量类型

1.shell的作用 shell是Linux系统中后台运行的一种特殊程序也可以理解 成一种特殊的软件&#xff0c;提供了用户与内核进行 交互操作的 一种接口。(简单的说就是shell把人类的高级语言转换成二进制数据&#xff0c;让机器明白你的指令) 过程&#xff1a;用户发出指令&#xff0c…