python第3天之函数
深入理解 Python 中的函数
简介
在编程中,函数是组织和复用代码的基本单元。Python 作为一门高级编程语言,提供了丰富的函数特性来帮助开发者编写清晰、模块化和高效的代码。在本文中,我们将深入探讨 Python 函数的定义、调用、参数、返回值、作用域等关键概念。
定义函数
函数通过 def 关键字定义。函数体开始于冒号(:)后面,并且缩进的代码块表示函数内部的语句。
def function_name(parameters):"""函数文档字符串(docstring)"""# 函数体...
调用函数
一旦定义了函数,就可以通过函数名以及括号内的实际参数来调用它。
# 调用之前定义的函数
function_name(arguments)
参数和实参
函数参数是定义函数时列出的变量,而实际参数(实参)是在函数调用时传递给函数的值。Python 支持位置参数、关键字参数、默认参数、可变参数列表和可变关键字参数。
默认参数
默认参数允许你为参数指定默认值,如果调用函数时没有传递该参数,则会使用默认值。
def greet(name='World'): print(f"Hello, {name}!") greet() # 输出: Hello, World!
greet("Alice") # 输出: Hello, Alice!
注意:多个参数时在默认值参数右侧不能出现没有默认值的参数
def display(a,b=1,c=2):print(a,b,c)dispaly(1)#输出结果4
可变参数
位置参数
函数传参时,形参和实参需要一 一对应
def show(n,s):for c in s:print(f'{n}--{c}')
#函数调用
show(1,'hello')#输出结果
1 -- h
1 -- e
1 -- l
1 -- l
1 -- o
不定长位置参数:通过在参数名前加星号(*),可以让函数接收不定数量的位置参数,这些参数被存储为一个元组。
def add(*args): return sum(args) print(add(1, 2, 3)) # 输出: 6
关键字参数
关键字参数解决了参数传递时的顺序问题,通过使用关键字和参数一一对应,可以实现无序传递
def show(n,s):for c in s:print(f'{n} -- {c}')show(s='hello',n=1)
不定长关键字参数:通过在参数名前加两个星号(**),可以接收不定数量的关键字参数,这些参数被存储为一个字典。
def profile(**kargs): for key, value in kargs.items(): print(f"{key}: {value}") profile(name="Alice", age=30, job="Developer")
参数综合
一、定义一个可以接收任何参数的函数
def display(*args,**kwargs):print(f'args:{args}')print(f'kwargs:{kwargs}')
display()
display(1,2,3)
display(a=1,b=2)
display(1,2,3,4,a=1,b=2)#位置参数不能放在关键字参数后面 因为你定义的时候把不定长位置参数放在不定长关键字参数前面的
display(a=1,b=2,2,3,4)#这行代码会报错
二、混合写法(先把abcde赋值然后关键字参数前面的都是不定长位置参数,随后定长关键字参数随后不定长关键字参数)
def func(a, b, c, d, e, *args, f=1, g=2, **kwargs):print(a,b,c,d,e)print(args)print(f,g)print(kwargs)
func(1,2,3,4,5,5,6,7,8,9,f=11,g=22,h=333,i=444)
返回值
return 语句用于从函数中返回值。如果没有 return 语句或者 return 后面没有任何值,函数将返回 None。遇见return直接结束函数执行。
def square(number): return number**2
result = square(4)
print(result) # 输出: 16
作用域
在 Python 中,变量的作用域是由变量定义的位置决定的。函数中定义的变量拥有局部作用域,而在函数外定义的变量则拥有全局作用域。
解释器在执行代码时,发现return 后成如果有多个值 ,那么就会将这多个值 ,直接组包成一个元组。然后将这个元组返回。
x = "global"
def func(): y = "local" print(y) # 输出: local print(x) # 输出: global func()
print(x) # 输出: global
# print(y) # 错误: y 在此不可用,因为它是局部变量
文档字符串
每个函数都可以有一个文档字符串(docstring),它通常用三引号括起来。文档字符串用于解释函数的目的和如何使用它。
def greet(name):
"""向用户发出问候""" print(f"Hello, {name}!")
总结
Python 中的函数是编程中不可或缺的工具,它们帮助我们以结构化和高效的方式组织代码。通过深入了解函数的各种特性,我们可以更好地管理代码的复杂性,编写出易于阅读和维护的程序。掌握 Python 函数的使用将使你在编程路上更进一步。
相关文章:
python第3天之函数
深入理解 Python 中的函数 简介 在编程中,函数是组织和复用代码的基本单元。Python 作为一门高级编程语言,提供了丰富的函数特性来帮助开发者编写清晰、模块化和高效的代码。在本文中,我们将深入探讨 Python 函数的定义、调用、参数、返回值…...
SQL Server 数据库,为products表添加数据
在插入数据的时候,需要注意以下事项。 > 每次插入一整行数据,不可能只插入半行或几列数据。 > 数据值的数目必须与列数相同,每个数据值的数据类型、精度和小数位数也必须与相应的 列匹配。 > INSERT语句不能为标识列指定值&#…...
C语言结构体详解(二)(能看懂文字就能明白系列)文章很长,慢慢品尝
系列文章目录 第一章 结构体的介绍和基本使用 🌟 个人主页:古德猫宁- 🌈 信念如阳光,照亮前行的每一步 文章目录 系列文章目录🌈 *信念如阳光,照亮前行的每一步* 前言前面一篇文章主要介绍了结构体的基础…...
WPF不使用AllowsTransparency实现高性能透明背景异形窗体
前言 最近在WPF项目中使用到异形窗体结合Webbroswer组件做web界面的公告展示,当时不想太麻烦引入Cef组件,就想用自带的Webbroswer来做展示,为了美观还做了异形窗体,结果测试就杯具了,自带的Webbroswer在AllowsTransparency=“True” 模式下根本就无法显示,界面一片空白,…...
唯创知音WT2605C语音芯片MP3音频IC:轻松实现指令随机播放与无缝循环播放等功能
在现代化的电子产品中,音频功能的重要性日益凸显。无论是智能家居、玩具、医疗设备还是仪器仪表,富有吸引力的音效与语音提示都能显著提升用户体验。唯创知音WT2605C语音芯片MP3音频IC便是为了满足这一需求而诞生的,它具备指令随机播放、无缝…...
uniapp+微信小程序监听返回事件
代码附在最后 适用场景:uniapp开发微信小程序 需求是我点击列表进入数据信息的详情界面,点击详情界面的收藏,返回上一界面后,更新列表中的收藏情况。 目录 一、使用onUnload监听页面卸载 二、使用getCurrentPages()获取当前页…...
Python函数的高级用法
Python 的函数是“一等公民”,因此函数本身也是一个对象,函数既可用于赋值,也可用作其他函数的参数,还可作为其他函数的返回值。 使用函数变量 Python 的函数也是一种值:所有函数都是 function 对象,这意…...
excel单元格内换行按什么快捷键
如果我们使用excel软件的时候,因为一些日常的操作太过繁琐想要简化自己的操作步骤的话,其实是有很多快捷方式在其中的。那么对excel单元格内换行按什么快捷键这个问题,据小编所知我们可以在表格中使用Alt Enter来进行换行。详细内容就来看下…...
docker容器内部文件挂载主机
docker images执行该命令可以发现一个centos镜像 docker run --namemycentos -itd --privilegedtrue --restartalways -p 88:80 -v C:\Users\Administrator\Desktop\dockerTest:/bin/gh:ro centosdocker run 命令用于在 Docker 上创建和运行容器。 --namemycentos 指定容器…...
python 实现一个简单的计算器
python 实现一个简单的计算器 本文主要整合下tkinter ,实现下简单的计算器. 代码如下: #!/usr/bin/python3 # -*- coding: UTF-8 -*- """Author: zhTime 2023/12/2 下午13:01 .Email:Describe: """ import tkinter as tk# 创建计算器窗口 ro…...
前端对浏览器的理解
浏览器的主要构成 用户界面 - 包括地址栏、后退/前进按钮、书签目录等,也就是你所看到的除了用来显示你所请求页面的主窗口之外的其他部分。 浏览器引擎 - 用来查询及操作渲染引擎的接口。 渲染引擎 - 用来显示请求的内容&#…...
Linux(openssl):X509_verify通过ca证书的public key验证证书的签名
/docs/man3.0/man3/X509_verify.html (openssl.org) 提供了方法用于通过ca证书的public key验证证书的签名 //verify_cert.hpp #include <string> #include <memory> #include <filesystem> #include <openssl/pem.h>using namespace std; namespace …...
全面的.NET微信网页开发之JS-SDK使用步骤、配置信息和接口请求签名生成详解
JSSDK使用步骤 步骤一:绑定安全域名: 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。 步骤二:引入JS文件: 在需要调用JS接口的页面引入如下JS文件,(支持https):http://…...
深入了解汉字转拼音转换工具:原理与应用
一、引言 汉字作为世界上最古老、最具象形意的文字之一,承载了数千年的历史文明。然而,在现代信息技术环境下,汉字的输入、输出和检索等方面存在一定的局限性。拼音作为汉字的一种音标表达方式,能够有效地解决这些问题。本文将为…...
沈阳师范大学期末考试复习pta循环数组函数指针经典编程题汇总+代码分析
目录 前言:临近期末,接下来给大家分享一些经典的编程题,方便大家复习。不一定难,但都是入门的好题,尽可能的吃透彻。因为据说期末考试的题很多来自pta上面的原题。 对于一些语言我是用c来写的,不妨碍理解…...
【面试攻略】Oracle中blob和clob的区别及查询修改方法
大家好,我是小米,欢迎来到小米的技术小屋!今天我们要一起来聊聊一个在面试中常常被问到的问题——“Oracle中Blob和Clob有啥区别,在代码中怎么查询和修改这两个类型的字段里的内容?”别急,跟着小米一步步揭…...
An illegal reflective access operation has occurred问题记录
报错 2023-11-30T01:08:18.7440800 [ERROR] [system.err] WARNING: An illegal reflective access operation has occurred 2023-11-30T01:08:18.7450800 [ERROR] [system.err] WARNING: Illegal reflective access by com.intellij.ui.JreHiDpiUtil to method sun.java2d.Sun…...
抓取检测(Grasp Dection)
抓取检测 抓取检测被定义为能够识别任何给定图像中物体的抓取点或抓取姿势。抓取策略应确保对新物体的稳定性、任务兼容性和适应性,抓取质量可通过物体上接触点的位置和手的配置来测量。为了掌握一个新的对象,完成以下任务,有分析方法和经验…...
人工智能学习4(特征选择)
编译工具:PyCharm 有些编译工具在绘图的时候不需要写plt.show()或者是print就可以显示绘图结果或者是显示打印结果,pycharm需要(matplotlib.pyplot) 文章目录 编译工具:PyCharm 特征选择嵌入法特征选择练习ÿ…...
vue中keep-alive的使用
什么是keep-alive? keep-alive是一个内置组件,用于缓存和管理组件的状态。 当 keep-alive包裹一个组件时,这个组件的状态将会被缓存起来,而不是每次重新渲染。这在多个视图之间切换时特别有用,可以避免重复的创建和销…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...
水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关
在水泥厂的生产流程中,工业自动化网关起着至关重要的作用,尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关,为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多,其中不少设备采用Devicenet协议。Devicen…...
