(PYTHON)函数

函数的基本概念:

python中函数分为以下四种:

1,python内置函数:如abs,len,max,min;

2,标准库函数:通过import声明标准库,如:math,random,通过import声明引入;

3,第三方库:由社区提供,同样由import声明引入;

4,由函数自定义的函数;

函数的使用:

函数的定义与调用:

函数定义的语法格式如下:

def 函数名([参数列表]):函数体

注意:

1,多个参数使用‘,’隔开;

2,不要少了圆括号后的‘ :’;

3,函数体与def语句之间要保持一定的缩进;

4,无论显示声明与否,函数语句都会返回一个return值:

例如:

def dayin(a):print(a)print(dayin(a))

若输入:2,则输出结果为:2; None。即说明了在没有显示说明return值时,实际上会返回None值

ps:

函数帮助文档的书写:

帮助文档可以随时对于某一变量或是某一函数的作用进行说明(由自己撰写),其声名方式如下:

def shili(x):'''本代码作为解释说明的作用'''函数体

用shift + tab 唤出;

函数的参数:

1,默认值函数:

在声明函数时,可以为某些参数指定默认值,当没有传入对应的实参值时,该变量就会使用默认值

例如:

def babble(words, times = 1):print((words + " ") * times)
babble("hello",3)
babble("nihao")输出:
hello hello hello 
nihao

注意:默认值参数必须写在形参列表的右边

2,按名称传递参数:

可以指定某一个参数名进行传参,摆脱了顺序的限制:

def test(a, b):print(a + '=' + b)
test(a = "aa", b = "bb")
test(b = "bb", a = "aa")结果相同

 在print函数中按名称传参的例子:

若希望在输出的不同项之间用指定字符A相连,可以调用形式:

print(..., sep = "A")

若不希望在一次输出后换行,可以使用形式:

print(...., end = "")

 自动换行的实现:

for i in range(1, 10):print(i, end = ", " if i %3 != 0 else "\n")1, 2, 3
4, 5, 6
7, 8, 9

这里注意一个新的if else语句书写形式:

A if 条件1 else B

3,可变参数:

在定义函数的参数时,

使用带  *  的参数,意味着允许向函数传递可变数组的参数。调用函数时,自该参数后的所有参数都被收集为一个元组。例如:

def test(*a):for i in a:print("{:^4}".format(i), end = ' ')return len(a)
count = test('李白', '杜甫')
print("共{}人".format(count))输出:李白   杜甫  共2人

   使用带 ** 的参数,自该参数后的所有参数都被收集为字典

def test(**a):print(a)
test(group1 = 10, group2 = 20, group3 = 30)输出:{'group1': 10, 'group2': 20, 'group3': 30}

 若同时存在多个可变参数与默认值参数该怎么传参:

4,形参与实参的讨论:

单个数据类型与c++类似,不再赘述;

当实参是列表等可变对象时,形参实质上就是对该列表的直接引用,形参的改变之间反馈在实参列表上。

(ps:  列表,字典...... 均为可变对象; int, float, str(字符串),bool 类型均是不可变对象)

5,函数返回多个值:

可以采用直接返回一个元组,返回多个值:

例如:

def fun(a, b):return (a, b, a / b, a % b)
n1 = fun(6 ,4 )
print(n1)

 lambda函数:

定义:

lambda函数——匿名函数,是一种在同一行进行函数定义的方法。广泛用于需要函数对象作为参数或者函数比较简单且只是用一次的场合。

定义语法格式:

lambda 参数1, 参数2, ....: <函数语句>

实例:

输出负数:
f = lambda x: x < 0
lis = [1, -1, 2, 3, -2, -3]
for i in filter(f, lis):print(i)

 注意:这里的filter函数用于过滤序列,过滤掉不符合条件的元素。

            filter函数接受两个参数:第一个为判断函数,第二个是序列

也可以简化为:

lis = [1, -1, 2, 3, -2, -3]
for i in filter(lambda x: x < 0, lis):print(i)

利用lambda对字典元素按值或按键排序:

若未提前说明:则默认视作字符串,通过字典序比较大小:
sorted(dict_data.items())按照值比大小
sorted(dict_data.items(), key = lambda x: x[1])  按值与10的余数比大小:
sorted(dict_data.items(), key = lambda x: x[1] % 10) 按照列表中元素的长度比大小:
sorted(dict_data.items(), key = lambda x: len(x))

变量的作用域:

两种最基本的变量作用域是局部变量和全局变量。

全局变量:

变量在函数外命名。

局部优先原则:

在局部变量与全局变量同名时,优先使用局部变量。

注意:若要强制声明为全局变量,则应加上global,声明后面出现的同名局部变量即是全局变量

递归函数 的调用:

声明好边界——即具体return值;

例如递归方法求最大公约数:

def gcd(a, b):if b == 0: return aelse : return gcd( b, a % b)  %%这一步相当于自动完成了较大数与较小数的交换print(gcd(12, 24))

实例运用:

补充:

zip函数的使用:将对应元素打包成一个个元组,然后返回由这些元组组成的对象

zip([1, 2, 3], ['a', 'b', 'c'])输出结果为 (1, ‘a’),(2, 'b'),(3, 'c')

相反的,将匹配后的结果再给zip函数,则会返回拆开后的两个列表

统计文章词频:

def gettext(text):   ##除去特殊符号和字母统一小写text = text.lower()for ch in ",.;?=:\'":text = text.replace(ch, " ")return textdef wordfreq(text):words = text.split()  ##split默认以空格和换行符为间隔分割元素counts = {}for word in words:count[word] = counts.get(word, 0) +1excludes = {'the','and','to','of','a','be'}   ##去掉无意义单词for word in excludes:del(counts[word])items = list(counts.items())items.sort(key = lambda x: x[1], reverse = True)return items[:topn]

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

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

相关文章

Winform(1.Winform控件学习)

使用的控件有:Button,Label,TextBox button:表示一个按钮,用户点击按钮触发事件 click事件最常用 label:标签,用于显示文本 Name属性:变量名称 textBox:输入框 Form1代码: using System; using System.Collections.Generic; using System.ComponentModel; using Sys…

linux centOS7.9 No package docker-ce available

docker pull apache/apisix:3.2.2-centos Error response from daemon: missing signature key 处理方式如下&#xff1a; 问题&#xff1a;在纯净机里安装docker时报错No package docker-ce available。 解决办法&#xff1a; 1、更新yum&#xff0c;使用yum -y upgrade&#…

小白学习java第15天:JDBC

1.数据库驱动 想一下我们之前是怎么操作数据库&#xff0c;是不是使用SQL语句对其mysql数据库管理系统&#xff0c;然后管理系统在进行数据库&#xff08;硬盘文件里面的&#xff09;进行操作。那么我现在想使用应用程序对其数据库进行操作&#xff0c;应该怎么办呢&#xff1…

django之数据的翻页和搜索功能

数据的翻页和搜素功能 目录 1.实现搜素功能 2.实现翻页功能 一、实现搜素功能 我们到bootstrap官网, 点击组件, 然后找到输入框组, 并点击作为额外元素的按钮。 我们需要使用上面红色框里面的组件, 就是搜素组件, 代码部分就是下面红色框框出来的部分。 把这里的代码复制…

Kotlin Multiplatform--02:项目结构进阶

Kotlin Multiplatform--02&#xff1a;项目结构进阶 引言正文 引言 在上一章中&#xff0c;我们对 Kotlin Multiplatform 项目有了基本的了解&#xff0c;已经可以进行开发了。但我们只是使用了系统默认的项目结构。本章介绍了如何进行更复杂的项目结构管理。 正文 在上一章中&…

【Git】连接github时的疑难杂症(DNS解析失败)

大家好&#xff0c;我是jstart千语。最近在将项目推送到github的时候&#xff0c;突然github就拒绝访问了&#xff0c;即使挂了VPN&#xff0c;网页也进不去&#xff0c;通过git也不能把代码推送上去。 即使后面看别人的一些解决方案&#xff0c;比如取消代理啊、更换ssh的方式…

ViTMAE:掩码自编码器是可扩展的视觉学习者

摘要 本文展示了掩码自编码器&#xff08;MAE&#xff09;作为计算机视觉中的可扩展自监督学习方法。我们的MAE方法很简单&#xff1a;我们对输入图像进行随机掩码&#xff0c;并重建缺失的像素。该方法基于两个核心设计。首先&#xff0c;我们开发了一种非对称的编码器-解码器…

全球碳化硅晶片市场深度解析:技术迭代、产业重构与未来赛道争夺战(2025-2031)

一、行业全景&#xff1a;从“材料突破”到“能源革命”的核心引擎 碳化硅&#xff08;SiC&#xff09;作为第三代半导体材料的代表&#xff0c;凭借其宽禁带&#xff08;3.26eV&#xff09;、高临界击穿场强&#xff08;3MV/cm&#xff09;、高热导率&#xff08;4.9W/cmK&…

AWS Glue ETL设计与调度最佳实践

一、引言 在AWS Glue中设计和调度ETL过程时&#xff0c;需结合其无服务器架构和托管服务特性&#xff0c;采用系统化方法和最佳实践&#xff0c;以提高效率、可靠性和可维护性。本文将从调度策略和设计方法两大维度详细论述&#xff0c;并辅以实际案例说明。 二、调度策略的最…

数据结构手撕--【二叉树】

目录 定义结构体&#xff1a; 初始化&#xff1a; 手动创建一个二叉树&#xff1a; 前序遍历&#xff1a; 中序遍历&#xff1a; 后序遍历 二叉树节点个数&#xff1a; 叶子节点个数&#xff1a; 二叉树第k层节点个数&#xff1a; 二叉树的高度&#xff1a; 查找值为x…

2025 Java 开发避坑指南:如何避免踩依赖管理的坑?

在 Java 开发的世界里&#xff0c;依赖管理就像是一座看不见的桥梁&#xff0c;连接着项目所需的各种第三方库和框架。然而&#xff0c;这座桥梁并非总是稳固&#xff0c;稍有不慎就可能掉入 “依赖地狱”&#xff0c;导致项目编译失败、运行异常。2025 年&#xff0c;随着开源…

用node打开一个网页

前言 使用node打开网页&#xff0c;要求跨平台 方案 使用子进程来用命令行打开网页链接就可以了&#xff0c;需要注意的是Mac系统使用的是open命令&#xff0c;Windows系统使用的是start命令&#xff0c;Linux等系统使用xdg-open命令。针对不同的操作系统使用不同的命令。 封…

使用功能包组织C++节点的具体教程

在 ROS&#xff08;Robot Operating System&#xff09;中&#xff0c;使用功能包&#xff08;package&#xff09;来组织 C 节点是一种常见且有效的方式&#xff0c;它能让代码结构更清晰、便于管理和复用。 1. 环境准备 确保已经安装了 ROS&#xff0c;这里以 ROS 2 Humble…

二项式分布html实验

二项式分布html实验 本文将带你一步步搭建一个纯前端的二项分布 Monte-Carlo 模拟器。 只要一个 HTML 文件&#xff0c;打开就能运行&#xff1a; 动态输入试验次数 n、成功概率 p 与重复次数 m点击按钮立刻得到「模拟频数 vs 理论频数」柱状图随着 m 增大&#xff0c;两组柱状…

通过 API 对接应用网络商城实现订单自动化

前言 API&#xff08;Application Programming Interface&#xff09;即应用程序编程接口&#xff0c;是一种允许不同软件应用程序之间进行交互和数据共享的工具。它通过定义一组明确的规则和协议&#xff0c;使得各个软件系统能够以标准化的方式相互通信。 在支付领域&#x…

openwrt作旁路由时的几个常见问题 openwrt作为旁路由配置zerotier 图文讲解

1 先看openwrt时间&#xff0c;一定要保证时间和浏览器和服务器是一致的&#xff0c;不然无法更新 2 openwrt设置旁路由前先测试下&#xff0c;路由器能否ping通主路由&#xff0c;是否能够连接外网&#xff0c;好多旁路由设置完了&#xff0c;发现还不能远程好多就是旁路由本…

FANUC机器人GI与GO位置数据传输设置

FANUC机器人GI与GO位置数据传输设置&#xff08;整数小数分开发&#xff09; 一、概述 在 Fanuc 机器人应用中&#xff0c;如果 IO 点位足够&#xff0c;可以利用机器人 IO 传输位置数据及偏移位置数据等。 二、操作步骤 1、确认通讯软件安装 首先确认机器人控制柜已经安装…

UE5 Assimp 自用

记录一下配assimp库到ue中的过程。因为想在ue里面实现一些几何处理(虽然ue好像有相关的geo的代码&#xff09;&#xff0c;遂配置了一下assimp。 1. 编译整理生成自己所需要的文件。cmake编译&#xff0c;下载github 的官方的assimp-master&#xff0c;然后cmake都是默认的就行…

第18章:MCP在创作领域中的应用

第18章:MCP在创作领域中的应用 创意过程,无论是写作、绘画、音乐创作还是设计,往往充满了不确定性、迭代和灵感的迸发。传统 AI 在创意领域的应用常常局限于风格迁移、简单内容生成等。MCP 框架通过其对记忆、上下文和规划的整合,为 AI Agent 参与和辅助更深层次的创意活动…

电子电子架构 --- 主机厂视角下ECU开发流程

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…