函数(function)py

news2024/10/7 14:21:41

具有名称的,是为了解决某一问题,功能代码的集合

目录

一.定义函数

二.函数的分类

三.局部变量和全局变量

1.局部变量(local variable)

2.全局变量(global variable)

四.函数调用的内存分析

五.函数的参数

1.默认值参数

2.可变参数(不定长参数)

3.关键字参数(命名参数)

六.匿名函数

七.python 3.8的新特性

八.递归(Recurresion)


一.定义函数

        def  function  name([arges]):

                #函数体

                #[return 返回值]

调用函数

        函数名称([实参列表])

def print_msg(name,age,adress):
	'''
		这是函数的注释
	'''
	print(f"我叫{name}")
	print(f"今年{age}岁")
	print(f"家住{adress}")


#调用函数
print_msg("长安",20,"西安")
print_msg("岁雾",21,"湖南")


#print(help(print_msg))
#__doc__魔法属性是调用注释
print(print_msg.__doc__)

二.函数的分类

1.根据函数是否存在返回值:有返回值的函数 return        无返回值的函数

2.根据函数是否存在参数:有参函数        无参函数

3.根据函数的定义者:系统函数        自定义函数        第三方函数

三.局部变量和全局变量

1.局部变量(local variable)

定义在函数内部的变量

2.全局变量(global variable)

定义在模块内,作用域是整体模块的变量

注意:1.python基于安全考虑,禁止在函数内修改全局变量。如果一定要修改,一定要声明

           2.局部变量无法在外界访问

           3.局部变量的作用域就在当前函数中

name = "长安"
age = 20

def show_info(a,b):
#修改全局变量,进行声明
	global age
	c = 10
	print(c)

	age += 18
	print(age)

show_info(10,20)
print(name)
print(age)

四.函数调用的内存分析

值传递:在传递参数时,仅仅是将值拷贝一份,传递给函数的参数,变量的值不会因为函数内部的改动而发生变化

引用传递:在传递参数时,传递的是地址(指针),因此函数内的形参。获取的值也是同一块内存,因此整个值是同时被修改

五.函数的参数

1.默认值参数

通过定义函数时,将可能调用时不怎么变化的参数给定默认值,在调用时方便调用

注意:位置参数不能写在默认值参数后面

def get_circle_area(radiu, PI=3.14):
	'''
		求圆的面积
	'''
	return radiu * radiu * PI


print(get_circle_area(1, 3.14))
print(get_circle_area(2))

2.可变参数(不定长参数)

在开发时,我们往往有时候可能存在,传递非常多的参数

采用元组作为封装数据类型

def get_circle_area(radiu, PI=3.14, *args):
	'''
		求圆的面积
	'''
	print(args)
	if len(args) >= 1:
		print(args[0])
	return radiu * radiu * PI


print(get_circle_area(1, 3.14))
print(get_circle_area(2))
print(get_circle_area(3, 3.14, 10, 23, 67, 8))

3.关键字参数(命名参数)

采用字典作为封装数据类型

def get_circle_area(radiu, PI=3.14, *args, **kwargs):
	'''
		求圆的面积
	'''
	print(kwargs)
	if len(kwargs) >= 1:
		print(kwargs.get('name',"无名氏"))


	return radiu * radiu * PI


print(get_circle_area(1, 3.14))
print(get_circle_area(2))
print(get_circle_area(3, 3.14, 10, 23, 67, 8))
print(get_circle_area(4, 3.14, 10, 23, 67, 8, name="长安",age=20 ))

六.匿名函数

        如果python,存在函数作为参数传递函数,又不想外界访问,而且参数函数足够简单,建议定义为匿名函数(lambda表达式)

lambda [arg1, arg2]:函数体

def print_msg(fn, msg):
	fn(msg)


# def test(info):
# 	print(info)


print_msg(lambda msg: print(msg), "你好,匿名函数!")

七.python 3.8的新特性

声明函数参数类型:python是一门弱数据类型语言

def add(x:int, y:float) -> float:
	return x + y


print(add(5, 8))

八.递归(Recurresion)

函数自身调用自身

#求斐波那契数列
def fibonacci(n):
	if n == 1:
		return 0
	if n == 2:
		return 1

	return fibonacci(n - 1) + fibonacci(n - 2)


print(fibonacci(3))
print(fibonacci(4))
print(fibonacci(5))
print(fibonacci(6))

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

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

相关文章

基于timegan扩增技术,进行多维度数据扩增(Python编程,数据集为瓦斯浓度气体数据集)

1.数据集介绍 瓦斯是被预测气体,其它列为特征列,原始数据一共有472行数据,因为原始数据比较少,所以要对原始数据(总共8列数据)进行扩增。 开始数据截图 截止数据截图 2. 文件夹介绍 lstm.py是对未扩增的数据进行训练…

1186. 删除一次得到子数组最大和;1711. 大餐计数;1834. 单线程 CPU

1186. 删除一次得到子数组最大和 解题思路:如果没做过还不是很好想,当时自己第一反应是双指针,结果是个动态规划的题。 核心就是dp的定义,dp[i][k]表示以arr[i]结尾删除k次的最大和。看到这里其实就有一点思路了 dp[i][0]表示以…

KGAT: Knowledge Graph Attention Network for Recommendation

[1905.07854] KGAT: Knowledge Graph Attention Network for Recommendation (arxiv.org) LunaBlack/KGAT-pytorch (github.com) 目录 1、背景 2、任务定义 3、模型 3.1 Embedding layer 3.2 Attentive Embedding Propagation Layers 3.3 Model Prediction 3.4 Optimi…

docker容器引擎(一)

docker 一、docker的理论部分docker的概述容器受欢迎的原因容器与虚拟机的区别docker核心概念 二、安装docker三、docker镜像操作四、docker容器操作 一、docker的理论部分 docker的概述 一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源再Linux容…

ThreeJS打造自己的人物

hello,大家好,我是better,今天为大家分享如何使用Three打造属于自己的3D人物模型。 人物建模 当下有很多人物建模的网站,这里给大家分享的 Ready Player Me - Create a Full-Body 3D Avatar From a Photo 前往这个网址&#xff…

AI销售工具:驱动销售团队效率和个性化服务的未来

在数字化时代,AI销售工具成为推动销售行业发展的重要力量。这些创新工具融合了人工智能技术和销售流程,以提高销售团队的效率和提供个性化服务为目标。随着科技的不断进步,AI销售工具正引领着销售行业走向一个更加智能和高效的未来。 AI驱动的…

专题-【哈希函数】

14年三-3) 20年三-2) 哈希表: 查找成功: ASL(12113144)/817/8; 查找失败(模为7,0-6不成功次数进行计算): ASL(3217654)/74。

Qgis3.16ltr+VS2017二次开发环境搭建(保姆级教程)

1.二次开发环境搭建 下载osgeo4w-setup.exeDownload QGIShttps://www.qgis.org/en/site/forusers/download.html 点击OSGeo4W Network Installer 点击下载 OSGeo4W Installer 运行程序 osgeo4w-setup.exe,出现以下界面,点击下一页。 选中install from i…

【全方位解析】如何写好技术文章

前言 为何而写 技术成长:相对于庞大的计算机领域的知识体系,人的记忆还是太有限了,而且随着年龄的增大,记忆同样也会逐渐衰退,正如俗话所说“好记性不如烂笔头”。并且在分享博客的过程中,我们也可以和大…

小白带你学习Linux的rsync的基本操作(二十四)

目录 前言 一、概述 二、特性 1、快速 2、安全 三、应用场景 四、数据的同步方式 五、rsync传输模式 六、rsync应用 七、rsync命令 1、格式 2、选项 3、举例 4、配置文件 5、练习 八、rsyncinotfy实时同步 1、服务器端 2、开发客户端 前言 Rsync是一个开源的…

光线追踪计算加速:包围盒

包围盒(Bounding box)是加速光线追踪(Ray Tracing)的最简单方法,不一定将其视为加速结构,但这无疑是减少渲染时间的最简单方法。 推荐:用 NSDT设计器 快速搭建可编程3D场景。 使用包围盒来加速光…

椒图——靶场模拟

先查看ip,10.12.13.232模拟的外网ip,其他的模拟内网ip,服务里面搭建好的漏洞环境。 #第一个测试项目,web风险发现 新建,下发任务,点威胁检测,webshell,点扫描任务,点新…

迅镭激光赋能工程机械,客户连续复购激光加工设备达双赢!

工程机械是装备制造业的重要组成部分,当前,我国已成为门类齐全、规模庞大、基础坚实、竞争力强的工程机械设备制造大国。 随着工程机械产业正在全面向智能化、绿色化转型,激光加工成为推动工程机械产业转型升级的重要工具,越来越多…

一道SQL题

有个搞数仓的朋友不知道从哪儿弄了个题。。。 做了做体验了一下。。。 记录记录。 分析 要保证每天都要做新题 5天必须都做题,不然GG 最后一天必须做新题,如果最后一天做新题了,前面那几天没做新题,做的是老题 最后一天&#…

初识mysql之理解索引

目录 一、 primary key对索引的影响 1. 主键数据有序问题 2. mysql中的page 3. 主键排序问题 二、理解多个page 1. 数据在page中的保存 2. 页目录 3. 单页情况 4. 多页情况 5. 为什么除了叶子节点外的其他节点不保存数据,只保存目录 6. 为什么叶子节点全…

创意网页模板免费下载,让你的网站与众不同!

今天给大家带来的网站模板素材,网站类型丰富,包含户外旅行、餐饮、个人网站等等,可以学习和参考其中的布局排版和配色。 ⬇⬇⬇点击获取更多设计资源 https://js.design/community?categorydesign&sourcecsdn&planbbqcsdn772 1、设…

域内信息收集

将网络中多台计算机逻辑上组织到一起进行集中管理,这种区别于工作组的逻辑环境叫 做域。域是由域控制器(Domain Controller)和成员计算机组成,域控制器就是安装了活动 目录(Active Directory)的计算机。活动目录提供了存储网络上对象信息并使用网络使用该…

图像处理之canny边缘检测(非极大值抑制和高低阈值)

Canny 边缘检测方法 Canny算子是John F.Canny 大佬在1986年在其发表的论文 《Canny J. A computational approach to edge detection [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1986 (6): 679-698.》提出来的。 检测目标: 低错误率…

2023年软件测试八股文(含答案+文档)

Part1 1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求自…

汽车新品研发用泛微事井然,全过程数字化、可视化

产品研发是汽车制造产业链的运营过程中的初始阶段,是提升汽车企业创新力、竞争力的重要一环,不仅要洞悉市场变化,还要有效协同企业内部的各类资源… 汽车新产品研发项目周期长、资源投入大,面临着诸多挑战: 1、市场需…