python(六)——函数

2023-11-16

函数

定义函数

例子:

def add_way(a,b):
    print("两个数加起来的结果是%d" % (a+b))

info_a = 1
info_b = 2
add_way(info_a,info_b)

在这里插入图片描述

实参:调用函数时传递给函数的信息。在上例中实参为info_a和info_b
形参:函数完成其工作所需要的一项信息。在上例中形参为a和b

传递实参

位置实参

函数调用时,基于形参的顺序与实参相关联。

def pet(pet_name,pet_type):
    print("这是一只名叫"+pet_name+"的"+pet_type)

pet('jack','dog')

在这里插入图片描述

关键字实参

关键字实参是传递给函数的名称-值对。这种方法能让你无需考虑函数调用中的实参顺序。

def pet(pet_name,pet_type):
    print("这是一只名叫"+pet_name+"的"+pet_type)

pet(pet_name = 'jack',pet_type = 'dog')

在这里插入图片描述

形参默认值——缺省参数

在函数的定义中可以通过给形参设置默认值,此时可以不给该值输入实参,则形参为默认值

def pet(pet_name,pet_type = 'dog'):
    print("这是一只名叫"+pet_name+"的"+pet_type)

pet(pet_name = 'jack') 

在这里插入图片描述

使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的形参。
若将默认值设置为空,则表示该形参是可选的,当有相应的实参输入时才有使用。

多值参数

在函数定义时,定义参数*args
*args用于接受多余的参数,以元组的格式来保存,只能接受多余的整数或字符串,但不能接受关键字参数
**kwargs能够接收多余的关键字参数,以字典的方式保存

def demo(num,*args,**kwargs):
    print(num)
    print(args)
    print(kwargs)

demo(10,20,30,40,name = "lin",age = 25)

在这里插入图片描述
例子:计算任意多个数字的和

def sum_numbers(*args):
    sum = 0
    print(args)
    for i in args:
        sum += i
    print(sum)

sum_numbers(1,2,3)

在这里插入图片描述

多值参数拆包

test()为函数
test(a,b,args,kwargs) 
相当于test(10,20,(30,40,50,60),{'name':'lin','age'=20})
test(a,b,*args,kwargs)
相当于test(10,20,30,40,50,60,{'name':'lin','age'=20})
test(a,b,*args,**kwargs)
相当于test(10,20,30,40,50,60,'name':'lin','age'=20)

返回值

在函数中,可以使用return语句将值返回到调用函数的变量。

def get_name(firstname,lastname):
    name = firstname + lastname
    return name

full_name = get_name('Lin','yu')
print(full_name)

在这里插入图片描述

使用默认值让实参变为可选

def get_name(firstname,lastname,midname = ''):
    name = firstname + midname + lastname
    return name

full_name1 = get_name('Lin','yu')
full_name2 = get_name('Lin','yu','xiao')
print(full_name1)
print(full_name2)

在这里插入图片描述

通过容器返回多个变量

通过列表返回:

def func():
    #定义变量,保存温度
    tmp = 27
    #定义变量,保存湿度
    wetness = 89.5
    #定义变量,保存当前PM2.5
    pm_25 = 120

    #返回多个值,借助容器,如列表、元组、字典等
    return [tmp,wetness,pm_25]

#main函数
ret = func()
print(ret)
print(type(ret))

在这里插入图片描述

元组返回多个返回值

def func():
    #定义变量,保存温度
    tmp = 27
    #定义变量,保存湿度
    wetness = 89.5
    #定义变量,保存当前PM2.5
    pm_25 = 120

    #返回多个值,借助容器,如列表、元组、字典等
    return tmp,wetness,pm_25

#元组的拆分,要严格按照顺序和个数来确定
a,b,c = ret = func()
print(ret)
print(type(ret))
print(a)
print(type(a))
print(b)
print(type(b))
print(b)
print(type(b))

在这里插入图片描述

函数的注释

使用三双引号在函数名后进行注释,对于编程了解函数的功能有很大的作用。
此时能够通过把鼠标放在函数上能看到函数的注释,或者用help(函数名)语句把函数的注释输出。

def add_way(a,b):
    """
    该函数用于加法运算
    """
    return a+b;

help(add_way)

在这里插入图片描述

模块

模块的定义

函数的优点之一是能够将代码块与主程序分离,因此可以将函数存储在被称为模块的独立文件中,再将模块导入到主程序中,使用import语句导入模块。

1、模块是比函数更大的封装,模块中可以封装多个函数
2、原则上,任何一个python文件都可以作为模块,模块名要符合标识符命名规范
3、使用模块:
①导入模块:import 模块名
②使用模块中的工具:模块名.函数名 模块名.变量名
4、作用:把成熟稳定的代码封装到模块中,供其他开发者使用,提高开发效率。
5、注意:被导入的模块会被python解释器从头到尾扫描,如果遇到可执行的代码会直接执行。

model_test.py

print("正在调用")
def add_way(a,b):
    return a+b;


主程序.py
import model_test

info_a = int(input("请输入a的数值:"))

info_b = int(input("请输入b的数值:"))

result = model_test.add_way(info_a,info_b)

print("结果等于 %d" % result)

在这里插入图片描述

导入特定的函数

导入模块可以只导入一个特定的函数,而不把模块中的全部函数进行导入。

from model_test import add_way

info_a = int(input("请输入a的数值:"))

info_b = int(input("请输入b的数值:"))

result = add_way(info_a,info_b)

print("结果等于 %d" % result)

在这里插入图片描述

给导入的模块或者函数起别名

from model_test import add_way as add
import model_test as model

匿名函数

函数的引用

函数名就是一个变量名,保存当前函数体的引用地址。
在这里插入图片描述

匿名函数——lambda表达式

用lambda关键词创建小型匿名函数
其省略了def定义函数的标准步骤,可以定义功能简单的函数
语法:lambda 参数:表达式
特点:匿名函数把表达式作为整个返回值进行返回

# 定义匿名函数,不带参数的匿名函数,匿名函数本身就是函数体
print(lambda : 100)
print((lambda: 100)())

ret = lambda:100
print(ret)
print(ret())

# 定义匿名函数,带一个参数的匿名函数
# 匿名函数直接返回函数中的表达式
print((lambda x : x + 100)(30))

func = lambda x : x + 100
print(func(50))


# 定义匿名函数,带两个参数的匿名函数
func = lambda x,y: x + y
print(func)
ret = func(10,20)
print(ret)

print((lambda x, y: x + y)(30,40))


# 匿名函数作为函数的参数
def sum_number(a,b,opt):
    print("a=%d" % a)
    print("b=%d" % b)
    print("%d + %d = %d" % (a,b,opt(a,b)))

sum_number(10,20,lambda x,y: x+y)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python(六)——函数 的相关文章

  • 编写测试用例方法之边界值分析法

    今天我们再来介绍另外一个编写测试用例的方法 边界值分析法 这个方法也是比较常用的写测试用例的方法 话不多说 开始整干货 首先 全图镇楼 之前我们也说过了 从测试点到测试用例 中间要有专业的方法 并对测试点进行扩充 然后才能详细地把测试点说清
  • 赞扬精心设计:基于属性的测试如何帮助我成为更好的开发人员

    开发人员的测试工具箱就是其中之一 很少保持不变 当然 某些测试实践已被证明比其他测试更有价值 但我们仍在不断寻找更好 更快和更具表现力的方法来测试我们的代码 基于属性的测试 对于Java社区几乎是未知的 这是Haskell员工精心制作的又一
  • 某验3空间推理验证码破解

    geetest极验空间推理验证码破解 gt 本篇文章仅供学习使用 如侵权请联系删除 某验验证码3代 4代已经是老生常谈的问题了 本篇文章粗略的分析一波3代空间推理验证码识别与验证的整个过程 yolov识别坐标 1 参数破解 从一开始gt和c
  • 【高级篇 / FortiGate-VM】(6.4) ❀ 02. 安装并启用 FortiGate VM ❀ FortiGate 防火墙

    怎么启用VMware FortiGate VM虚拟机 VMware FortiGate VM虚拟机第一次配置要怎么才能启用 首先 你需要下载到VMware FortiGate VM虚拟机文件 在D盘根目下新建一个子目录 例如FortiGat
  • 再探ROP(下)

    文章目录 0x01 概述 0x02 ret2reg 2 1 起因 2 2 原理 0x03 brop详解 3 1 概述 3 2 逆向思维切入 1 搭建环境 2 溢出长度和爆破canary 3 如何getshell 4 寻找直接条件 5 寻找间
  • 【Android开发那点破事】Android调试安装出现2个或2个以上图标

    前些日子给我们的APP添加了启动画面功能 这个在前面已经说过了 Android开发那点破事 打开APP加载页面实现 今天在用真机调试的时候 发现app安装到手机上出现了2个图标 这里先将解决方法贴出来 后面再简单分析下为什么会出现2个图标
  • vue项目使用$router.go(-1)刷新原来界面

    1 问题 我们常常需要使用 router go 1 返回之前的页面 但是却发现 之前的界面 保持着上次跳转的状态 比如说 弹框未关闭 状态未更新之类的等等 2 原因 使用 router go 1 返回 之前的数据都保留 并未刷新原来的界面
  • 渗透测试常见漏洞说明资料

    一 文件上传漏洞 1 意义 用户上传的可执行脚本文件 木马 病毒 恶意脚本 webshell等 并通过此脚本获得执行服务器的能力 2 原因 前端和服务器端过滤不严格 黑白名单设置不完善导致 一些文件上传功能实现代码没有严格限制用户上传的文件
  • 华为机试题32-密码截取

    描述 Catcher是MCA国的情报员 他工作时发现敌国会用一些对称的密码进行通信 比如像这些ABBA ABA A 123321 但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解 比如进行下列变化 ABBA gt 12ABBA
  • Python爬虫-1——爬取网页

    爬取网页 函数 askUrl url 浏览器 Chrome开发者版 最好使用这个 其他可能会有问题 其中 url 是我们所要爬取的页面的网址 这里我们爬取的是豆瓣电影前250的数据 https movie douban com top250
  • Elasticsearch-笔记 docker安装

    镜像 docker pull kibana 7 7 0 docker pull elasticsearch 7 7 0 建立挂载文件夹 mkdir esdata elasticsearch config mkdir esdata elast
  • 三自由度机械手腕设计机构设计

    1 1工业机器人简介 机器人是一种自动的 位置可控的 具有编程能力的多功能机械手 能够借助于可编程序操作来处理各种材料 零件 工具和专用装置 以执行种种任务 1 工业机器人是一种用于工业生产的机器人系统 通过自动化 可编程的控制下完成工作
  • 数组去重(unique())--numpy

    1 unique函数功能 返回对数组元素去重 并按升序排序的数组 2 函数语法与参数 numpy unique ar return index False return inverse False return counts False a
  • 移动端以及多端适配问题

    移动端 1 移动端的适配方案 1 为适配不同端口不同屏幕下的页面布局采用的不同代码编写思路 1 统一缩放 需要长宽比接近 2 采用rem和vm等相对布局 固定长度的采用px等 3 固定的尺寸加弹性布局 要求的是元素不要固定长度超过范围量 2
  • 【设计模式】23种设计模式之七大原则

    设计模式 23种设计模式之七大原则 什么是设计模式的原则 1 单一职责原则 基本介绍 案例分析 注意事项 2 接口隔离原则 基本介绍 案例分析 代码实现 3 依赖倒转原则 基本介绍 案例分析 依赖传递的三种方式 注意事项 4 里氏替换原则
  • spdlog使用示例

    Copyright c 2015 Gabi Melman Distributed under the MIT License http opensource org licenses MIT spdlog usage example 参考文
  • tensorflow 默认图和自定义图

    graph1 TF Graph with graph1 as default 在这个代码块里使用的是新创建的graph1 d TF constant 10 11 12 13 dtype TF int32 此时默认的graph 就是graph
  • OSI七层模型、TCP/IP四层模型(超详细!!!!!)

    OSI七层模型 七层模型 亦称OSI Open System Interconnection 参考模型是国际标准化组织 ISO 制定的一个用于计算机或通信系统间互联的标准体系 一般称为OSI参考模型或七层模型 它是一个七层的 抽象的模型体
  • cuda,nvidia-driver ,cudnn下载地址及版本对应

    1 cuda CUDA Toolkit 11 5 Downloads NVIDIA Developer 右下角可下载先前版本 2 nvidia driver https www nvidia cn Download index aspx l
  • 主数据管理系统(MDM)调研总结!!!

    文章目录 一 引言 1 1 主数据背景 1 2 主数据定义 1 3 主数据管理 1 3 1 什么是主数据管理系统 1 3 2 主数据管理的两体系一工具 1 3 3 主数据管理的挑战 1 4 主数据与其它数据的关系 1 4 1 主数据与元数据

随机推荐

  • Mybatis知识总结(三):Crud的实现,Mybatis的参数和输出及配置文件

    一 知识复习 1 1 自定义流程再分析 1 2 mybatis 环境搭建步骤 第一步 创建 maven 工程 第二步 导入maven坐标 第三步 编写必要代码 实体类和持久层接口 第四步 编写 SqlMapConfig xml 第五步 编写
  • 【EDA Tools】Spyglass 检查 Verilog 和 SystemVerilog 混合语言及 Lint 检查

    目录 写在前面 读入设计 发现问题并解决 Lint 检查 写在前面 Spyglass可以用于检查混合设计中的语言互操作性和一致性问题 对于设计中包含多种硬件描述语言的情况 Spyglass 能够识别并解析其中的模块及其互连 并对其进行验证
  • 前端要懂的色域知识

    前端也要面对 五彩斑斓的红 这种世纪难题了吗 rgb 255 0 0 真的是红色吗 现在有个 CSS 色值 rgb 255 0 0 请问一下各位 在网页上展示的是什么颜色 各位可能不用思考就马上能够脱口而出 红色 But 各位有没有想过 这
  • 【Redis从入门到进阶】第 2 讲:Jedis 的快速掌握

    本文已收录于专栏 Redis从入门到进阶 专栏前言 本专栏开启 目的在于帮助大家更好的掌握学习Redis 同时也是为了记录我自己学习Redis的过程 将会从基础的数据类型开始记录 直到一些更多的应用 如缓存击穿还有分布式锁等 希望大家有问题
  • Unity接入腾讯广告/腾讯联盟/优量汇SDK操作步骤——源码+图文效果详情

    Unity接入腾讯广告 腾讯联盟 优量汇SDK操作步骤 源码 图文效果详情 前言 一 下载SDK 二 官网注册相关项目信息 1 新建媒体 2 新建广告位 三 更改代码 1 更改初始化SDK的代码 2 更改对应的ID 总结 版权声明 前言 最
  • k8s部署springboot

    前言 首先以SpringBoot应用为例介绍一下k8s的部署步骤 1 从代码仓库下载代码 比如GitLab 2 接着是进行打包 比如使用Maven 3 编写Dockerfile文件 把步骤2产生的包制作成镜像 4 上传步骤3的镜像到远程仓库
  • Ubuntu系统在终端中重启与关机

    如果你想保持当前用户的登录而并且使用root用户执行命令 可以输入 su root 即可 输入蜜码 可以运行 shutdown 命令 重启命令 1 reboot 2 shutdown r now 立刻重启 root用户使用 3 shutdo
  • Oracle 按创建时间排序,如果创建时间为空,将记录放置在最后

    oracle处理方式 在oracle中字段为空值时 被认为为最大 可通过 nulls last 将空值放到最后 语法 select from 表名 order by 排序字段 desc nulls last 实战 select from u
  • win10操作系统瘦身之微信减肥法

    很多人发现 win 10的系统盘空间一直在减少 甚至到跳出空间不足红色警告 但是又不知道哪里出问题 系统盘的容量到底被什么给吃了 所以今天就说说系统瘦身中 很管用的一个方法 减少微信的历史记录法 首先看下微信软件某个目录的空间占用情况 图1
  • 给自己的逆向工程阶段性学习感想总结

    想到哪写哪 逆向工程的学习比起近似的pwn来说 还是没那么吃基础的 不过基础知识和能力的牢固程度还是近乎决定了一个re手的上限 自己在这方面还是欠缺了不少 目前最吃亏的一个方面是代码分析能力 或者说算法能力 或者说正向能力 发现在做中难题的
  • Unity3D:角色拾取技术

    工程包下载 Unity3D虚拟现实开发之角色拾取 这个是成品图 角色拾取的原理是 由摄像机与屏幕上鼠标点击的位置确定一条射线 由此射线射向3D世界 最先和此射线相交的物体就是被选中的物体 然后对该物体的操控编写对应的代码即可 具体代码如下
  • 【python基础知识】21.高效偷懒的正确打开方式-毕业篇

    文章目录 前言 明确项目目标 分析过程 拆解项目 逐步执行 代码实现 版本1 0 输入表头 确定模版数据 阶段2 获取 复用模版数据 阶段3 0 写入csv文件 结语 前言 光阴似箭 日月如梭 不知不觉我们来到了Python基础语法课的最后
  • springboot项目启动报错:java.io.EOFException: null

    springboot项目启动时报 java io EOFException null异常 但是不影响功能 可能原因是由于tomcat上次非正常关闭时有一些活动session被持久化 表现为一些临时文件 在重启时 tomcat尝试去恢复这些s
  • ARM(IMX6U)裸机汇编LED驱动实验——驱动编写、编译链接起始地址、烧写bin文件到SD卡中并运行

    参考 Linux之ARM IMX6U 裸机汇编LED驱动实验 驱动编写 作者 一只青木呀 发布时间 2020 08 07 09 13 48 网址 https blog csdn net weixin 45309916 article det
  • Masm for Winodws 集成实验环境安装绿色免费版

    Masm for Winodws 集成实验环境安装绿色免费版 用于汇编的开发环境 绿色安全下载途径 希望能帮到有需要的人 不喜勿喷 提取文件后解压后 打开文件下载安装即可 百度网盘下载 链接 https pan baidu com s 1U
  • notepad++ 配置 python 以及Anaconda中的python(已解决)

    说明 无论是自己的电脑单独安装的python 还是Anaconda虚拟环境安装的python都是一样的 区别就是 独立安装的python 的exe文件路径添加的环境变量了 不需要制定它的路径直接运行下面的命令就可以 而Anaconda中的p
  • 常用js

    1 去掉字符串两端的空格 对字符串去两端空格 function stringTrim str if str null str undefined return null 用正则表达式将前后空格 用空字符串替代 return str repl
  • win10中不同版本jdk切换

    1 设置系统变量 java home8 java home8 以及java home 2 若无法切换jdk版本 可以在系统变量path中 删除默认路径 3 测试版本切换是否成功 一定要重启cmd
  • 使用mongodb数据库+node.js封装接口详细过程

    学习内容 使用mongodb存储数据 用node语言编写后端 学习产出 下载mongoose依赖包 npm install mongoose 创建一个js文件 keys js 文件写入路径配置 模块入口 module exports mon
  • python(六)——函数

    函数 函数 定义函数 传递实参 位置实参 关键字实参 形参默认值 缺省参数 多值参数 多值参数拆包 返回值 使用默认值让实参变为可选 通过容器返回多个变量 通过列表返回 元组返回多个返回值 函数的注释 模块 模块的定义 导入特定的函数 给导