python的函数学习

函数定义方式
Python:

def my_function(param1, param2, keyword_param=None):
return param1 + param2 + (keyword_param if keyword_param is not None else 0)
Python 使用 def 关键字来定义函数。参数类型不需要显式声明,Python 是动态类型语言。

C/C++:

int my_function(int param1, int param2) {
return param1 + param2;
}
C/C++ 中使用 int, float, char 等类型来明确指定参数类型。

Java:

public int myFunction(int param1, int param2) {
return param1 + param2;
}
Java 中同样需要明确指定参数类型。
函数作为参数传递
在 Python 中,函数可以作为参数传递给其他函数,这使得函数式编程成为可能。

def apply_operation(operation, a, b):
return operation(a, b)

定义一个加法函数

def add(a, b):
return a + b

定义一个减法函数

def subtract(a, b):
return a - b

result_add = apply_operation(add, 5, 3)
result_subtract = apply_operation(subtract, 5, 3)
print(result_add) # 输出: 8
print(result_subtract) # 输出: 2

不定长参数
Python 支持不定长参数,允许函数接受任意数量的参数。不定长参数有两种形式:

*args (非关键字参数):

def example_function(*args):
for arg in args:
print(arg)

example_function(1, 2, 3, "hello") # 输出: 1 2 3 hello

**kwargs (关键字参数):

def example_function(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")

example_function(name="Alice", age=30) # 输出: name: Alice age: 30
键=值参数(默认参数)
在 Python 中,函数可以接受带有默认值的参数。这使得调用函数时可以选择性地提供某些参数。

def greet(name, greeting="Hello"):
return f"{greeting}, {name}!"

print(greet("Alice")) # 输出: Hello, Alice!
print(greet("Bob", "Hi")) # 输出: Hi, Bob!
其中如果全是键=值的参数传递可以不按照顺序,如果有直接传入的参数则写到最前面。
匿名函数(Lambda 表达式)
Python 中可以使用 lambda 表达式来创建匿名函数。这些函数通常用于简单的操作,不适合复杂的逻辑。

add = lambda x, y: x + y
print(add(5, 3)) # 输出: 8

可以直接在函数中使用

result = apply_operation(lambda x, y: x * y, 5, 3)
print(result) # 输出: 15
弊端
可读性: 过度使用 lambda 表达式会使代码难以阅读和理解,尤其是当表达式复杂时。
调试困难: 匿名函数缺少名称,这使得在调试时难以定位错误。
功能限制: lambda 表达式只能包含简单的单行表达式,不能包含复杂的逻辑如条件语句、循环等。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PotPlayer 配置安装

目录一、下载1、官网链接2、微软商店 Microsoft Store二、安装1、双击安装包2、选择字体3、安装向导下一步4、接收许可协议5、选择组件及关联6、选择安装位置7、硬解选项三、设置1、关闭自动更新2、左键单双击设置3、视频下自动隐藏3.1、效果对比4、播放信息显示设置4.1、效果5…

2024年春秋杯网络安全联赛冬季赛部分wp

部分附件下载地址: https://pan.baidu.com/s/1Q6FjD5K-XLI-EuRLhxLq1Q 提取码: jay1 Misc day1-简单算术 根据提示应该是异或下载文件是一个字符串,写个代码字符串异或解密,由于需要密钥,所以先对单字节密钥进行爆破解密 爆破出flag代码如下: cipher_text = "ys~xdg/…

大夏龙雀DX-WF25(ESP32C2)蓝牙WIFI模块试用体验

模块尺寸跟引脚兼容常见的ESP8266 12-F模块,使用非常简单,vcc接3.3v,gnd接地,rx连接ch340的tx,tx连接ch340的rx即可。 如果需要通过urat下载程序,只需要把io9的引脚接地就行(下载完程序记得断开io9跟gnd的连接,否则程序无法运行)。芯片用的是ESP32C2(ESP8684),很遗…

1.20 前端连接数据库

今天完成了项目的网页前端与后端数据库的连接,已经能够将前端填写的内容添加到mysql数据库 例如页面如下:数据库内容:明天开始编写下一个功能

【vjudge训练记录】大一寒假专项训练——枚举算法

训练情况A题 给定 \((x,y)\),倒着枚举地毯的范围是否覆盖 \((x,y)\),如果覆盖直接输出,如果全部枚举完都没有则输出 -1点击查看代码 #include <bits/stdc++.h> // #define int long long #define endl \nusing namespace std;void solve(){int n; cin>>n;int x[…

Khepri C2 framework beacons记录(之前的)

1、背景 在查看进程时发现可疑隐藏进程,名称为.test(.test.93627),隐藏文件,很可疑,于是查了下进程日志发现如下:/private/tmp/.test /private/var/db/oah/4b8f81eadefb42da07e9e88fa7905df57faec82d8621008e0ae4a04d81e2169f/bb9595accf35a51de80f42e656bdb2217238af58…

(重要***)查询自己需要的SQL语句

凡是指标相关的,先清空相关干扰条件,然后点击确认,比如加载性能里的列表页面,要查慢加载次数这个指标这个时候去这个数据库 写SQL语句select* fromquery_log ql whereql.user_name = sheng.yu-n@msxf.com order byexec_time desc limit 50然后找到自己对应操作的SQL 通过结…

最强截图录屏工具ShareX v17.0.0 中文绿色版

软件介绍 ShareX 是一款功能强大的屏幕截图和屏幕录制工具,可用于创建高质量的屏幕截图、动画 GIF 和屏幕录像,并提供多种上传选项,使用户能够轻松地将它们共享到互联网上。除此之外,它还支持多种自定义功能,例如图像编辑、颜色拾取、OCR 文字识别等。软件功能快速截图:简…

动态可视化:一步步拆解LSTM和GRU

转自:https://zhuanlan.zhihu.com/p/47907312 编者按:关于LSTM,之前我们已经出过不少文章,其中最经典的一篇是chrisolah的《一文详解LSTM网络》,文中使用的可视化图片被大量博文引用,现在已经随处可见。但正如短视频取代纯文字阅读是时代的趋势,在科普文章中,用可视化取…

【大屏可视化】系统(Vue3 + ECharts5)快速实现和应用 ️

🎶【大屏可视化】系统(Vue3 + ECharts5)🎶这八部~~按照,难易的顺序来进行绘制!!!💯横向柱形图竖向柱形图雷达图环形图关系图数据云图数据展示图地图可视化02:基于 vite 与 tailwindcss 创建大屏可视化项目 1,基于 vite 创建项目,使用: npm create vite@latest …

Markdown转Beamer进阶

接上一篇介绍的基本Markdown通过pandoc编译转为Beamer风格文档的文章,本文主要介绍一些Markdown转Beamer其中的进阶用法。如Mermaid流程图,和Algorithms算法伪代码的使用等。技术背景 在前面的一篇文章中,我们介绍过Markdown转Beamer的基本方法。通过这个方案,我们可以只写…

Markdown转Beamer坑点

接上一篇介绍的基本Markdown通过pandoc编译转为Beamer风格文档的文章,本文主要介绍一些Markdown转Beamer其中的进阶用法。如Mermaid流程图,和Algorithms算法伪代码的使用等。技术背景 在前面的一篇文章中,我们介绍过Markdown转Beamer的基本方法。通过这个方案,我们可以只写…