当前位置: 首页 > news >正文

Python函数

什么是函数

函数时一个被命名的,独立完成特定功能的代码段,可能给调用它的程序一个返回值。通俗来讲,就是把一段可以实现某种功能的代码封装起来,想要使用这个功能就可以直接调用函数。

函数的作用

  • 模块化编程
  • 代码复用

函数定义和调用

  • 函数的定义
def 函数名(参数):函数体return 返回值
  • 函数的调用
函数名(参数)

注意:

  1. 根据实际的需求来确定函数是否需要参数
  2. 函数必须先定义后使用

例1. 定义一个函数,传入两个整数,返回这两个整数相加的和

def add(a,b):sum = a + breturn sum

函数的注释说明

开发人员定义了一个函数,需要为其他人提供这个函数的使用说明,就需要为这个函数写注释说明,要具体写明白函数的作用,参数和返回值

  • 格式
    在函数内的第一行,用 三引号 的写法来实现,推荐使用双引号
def add(a, b):"""计算两个数的和param a: 第一个数param b: 第二个数return: 两个数的和  """sum = a + breturn sum  

函数的参数

参数的可以让函数使用更加灵活,在定义函数的时候,函数中参数叫做形式参数,表示调用函数时需要传入什么值;而在调用函数的时候,函数中的参数叫做实际参数,表示实际参与运算的数据。

函数参数的分类

在函数参数的使用分类上,函数有4中常见参数

  • 位置参数
  • 关键字参数
  • 不定长参数
  • 缺省参数

1. 位置参数

调用函数时,根据函数定义的参数位置来传递参数,即传递的参数和定义的参数的顺序及个数必须一致

def user_info(name,age,gender):print(f"您的名字是{name},年龄是{age},性别是{gender}")user_info('Tom',18,'男')

2. 关键字参数

函数调用时,通过 键=值 的形式传递参数,可以让函数更加清晰,容易使用,同时也清除了参数的顺序要求

def user_info(name,age,gender):print(f"您的名字是{name},年龄是{age},性别是{gender}")user_info(name='Rose',gender='女',age=20)

函数调用时,如果有位置参数,位置参数必须在关键字参数的前面,但是关键字参数之间不存在先后顺序

3. 缺省参数

缺省参数也叫默认参数,用于定义函数时为参数提供默认值,调用函数时可以不传入该默认参数的值

def user_info(name,age,gender='男'):print(f"您的名字是{name},年龄是{age},性别是{gender}")user_info('Tom',22)

注意:

  1. 所有位置参数必须出现在默认参数前,包括函数定义和调用
  2. 函数调用时,如果为缺省参数传值则修改默认参数值,否则使用这个默认值

4. 不定长参数

不定长参数也叫可变参数,用于不确定调用的时候会传递多少个参数(不传参也可以)的场景

  • 位置传递
def user_info(*args):print(args)user_info('Tom') # ('Tom',)
user_info('Tom',18) # ('Tom',18)

传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组(tuple),args元组类型,这就是位置传递

  • 关键字传递
def user_info(**kwargs):print(kwargs)user_info(name='Tom',age=18,id=1) # {'name:'Tom','age':18,'id':1}

关键字传递,参数是键=值的形式,所有的键=值都会被kwargs接收,同时根据键=值组成字典

变量的作用域

  • 变量的作用域指的是变量的作用范围,即变量在哪里可以用,在哪里不可以用,主要分为 局部变量和全局变量
  • 局部变量是定义在函数体内部的变量,即只在函数体内部生效,其作用是在函数体内部临时保存数据,函数调用完成后,则销毁局部变量
  • 全局变量,是在函数体内外都能生效的变量
  • 使用global 关键字,可以在函数内部声明变量为全局变量

函数的返回值

定义一个函数,这个函数在做了一系列的计算操作之后,将最终的计算结果返回给函数的调用者,这个计算结果就是函数的返回值。

函数返回多个返回值

如果一个函数要返回多个返回值,代码如下

def return_num():return 1,2result = return_num()
print(result) # (1,2)

注意:

  1. return a,b 写法,返回多个数据的时候,默认是元组类型
  2. return 后面可以连接列表、元组或字典,以返回多个值

拆包

对于函数中的多个返回数据,去掉元组、列表或者字典,直接获取里面数据的过程
例1:一个元组中有多个元素,如果想要获取原著中的每一个元素的时候就可以使用拆包获取

my_tuple = (1,3.14,'hello',True)
num,pi,my_str,my_bool = my_tuple

例2.函数拆包,当函数有多个返回值时,返回值会组成一个元组

def return_num():return 100,200
num1,num2 = return_num()

例3. 字典拆包

my_dict = {'name':'张三','age':18}
ret1,ret2 = my_dict
print(ret1) # name
print(ret2) # age

匿名函数

  1. 定义一个两个数相加的函数
def get_sum(a,b):return a + b
  1. 使用匿名函数实现两个数相加
get_sum = lambda a,b : a + b

很多时候,匿名函数都是作为一个函数的参数来使用的

http://www.xdnf.cn/news/678889.html

相关文章:

  • python+tkinter实现GUI界面调用即梦AI文生图片API接口
  • PPO算法里clipfrac变量的作用
  • 《计算机组成原理》第 7 章 - 指令系统
  • 恶意npm与VS Code包窃取数据及加密货币资产
  • 科研级计算服务器 稳定支撑创新研究
  • 系统设计——项目设计经验总结3
  • int c =5; 代码解释
  • 《计算机组成原理》第 5 章 - 输入输出系统
  • 冒泡排序:像煮汤一样让数字「冒泡」
  • centos7安装MySQL(保姆级教学)
  • Linux信号量(32)
  • 鸿蒙OSUniApp 开发的滑动图片墙组件#三方框架 #Uniapp
  • 方正字库助力华为,赋能鸿蒙电脑打造全场景字体解决方案
  • 如何验证 AXI5 原子操作
  • leetcode刷题日记——完全二叉树的节点个数
  • Java怎么实现父子线程的值传递?InheritableThreadLocal类和transmittable-thread-local类?
  • Unity3D仿星露谷物语开发53之库存管理页面
  • Introduction to SQL
  • 【键盘说明书备份】ENERGYFORT
  • 编程日志5.27
  • MySQL :MySQL基本概念
  • 高性能计算 | 硅光芯片代工厂揭秘——技术特点与未来演进
  • SpringBoot集成jwt,实现token验证
  • 鸿蒙OSUniApp 实现自定义的侧边栏菜单组件#三方框架 #Uniapp
  • SQLord: 基于反向数据生成和任务拆解的 Text-to-SQL 企业落地方案
  • CMake 在尝试下载 Boost 时失败:SHA256 校验和与预期值不匹配
  • 【第1章 基础知识】1.8 在 Canvas 中使用 HTML 元素
  • 力扣HOT100之回溯:131. 分割回文串
  • 基于Matlab实现各种光谱数据预处理
  • Turf.js:前端地理空间分析的瑞士军刀