Python函数总结

news/2024/4/28 8:35:39/文章来源:https://blog.csdn.net/qq_46939030/article/details/128416547

在Python中,函数是一个带有名字的代码块,可以被反复调用。函数可以帮助你组织和重用代码,使你的程序更整洁,更易于维护。本文将会深入探索Python的秘密

目录

定义函数

自定义函数

内置函数

函数式方程

高阶函数

函数标注

往期精彩文章:

定义函数

定义函数的语法如下:

def function_name(parameters):# code to be executed

其中def是关键字,后面紧跟函数名和圆括号,圆括号内可以包含一个或多个参数,参数用逗号隔开。参数是函数执行时需要输入的值,它们在函数内都可以被当作变量使用。函数定义的末尾需要一个冒号,接下来的代码块应该缩进。举个例子,下面代码定义一个函数say_hello,它接受一个参数name,并打印一条问候语:

def say_hello(name):print("Hello, " + name + "!")say_hello("Alice")  # 输出 "Hello, Alice!"
say_hello("Bob")    # 输出 "Hello, Bob!"

函数也可以返回值。使用关键字return 可以将函数的执行结果返回给调用者。例如,下面的函数add会将两个数相力并返回结果:

def add(a, b):return a + bresult = add(1, 2)  # 调用函数并将结果赋值给变量 result
print(result)  # 输出 3

自定义函数

Python中使用def来定义函数,并使用return来返回特定的值。

看一个简单的函数的例子:

def my_function(x, y, z):if z > 1:return z * (x + y)else:return z / (x + y)

把我们之前讲的斐波拉赫数列的例子重新用函数来定义,可以这样写:

def fib(n):   a, b = 0, 1while a < n:print(a, end=' ')a, b = b, a+bprint()# 调用函数
fib(1000)

这样我们在调用my_function可以只用传递两个参数,最后的z可以使用默认的参数值。

注意,默认值只会执行一次,如果你传入的参数是可变对象(列表,字典和类实例)的话,我们需要注意这个问题:

def f(a, L=[]):L.append(a)return Lprint(f(1))
print(f(2))
print(f(3))# 输出
[1]
[1, 2]
[1, 2, 3]

如果不想在后面的调用中共享默认值,那么可以把默认值的赋值放到函数体内部:

def f(a, L=None):if L is None:L = []L.append(a)return L

内置函数

除了用户的自定义函数之外,Python内置了一些非常有用的函数:

内置函数

abs()

delattr()

hash()

memoryview()

set()

all()

dict()

help()

min()

setattr()

any()

dir()

hex()

next()

slice()

ascii()

divmod()

id()

object()

sorted()

bin()

enumerate()

input()

oct()

staticmethod()

bool()

eval()

int()

open()

str()

breakpoint()

exec()

isinstance()

ord()

sum()

bytearray()

filter()

issubclass()

pow()

super()

bytes()

float()

iter()

print()

tuple()

callable()

format()

len()

property()

type()

chr()

frozenset()

list()

range()

vars()

classmethod()

getattr()

locals()

repr()

zip()

compile()

globals()

map()

reversed()

__import__()

complex()

hasattr()

max()

round()

 我总结了以下几点:

  • abs():返回数字的绝对值。
  • all():如果所有元素都为真,则返回 True,否则返回 False。
  • any():如果任何元素为真,则返回 True,否则返回 False。
  • bin():将整数转换为二进制字符串。
  • bool():将值转换为布尔值。
  • chr():将整数转换为 Unicode 字符。
  • dict():创建一个新的字典。
  • float():将数字或字符串转换为浮点数。
  • hex():将整数转换为十六进制字符串。
  • int():将数字或字符串转换为整数。
  • len():返回序列的长度。
  • list():创建一个新的列表。
  • max():返回序列中的最大值。
  • min():返回序列中的最小值。
  • oct():将整数转换为八进制字符串。
  • open():打开文件。
  • ord():将字符转换为 ASCII 整数。
  • range():生成一个数字序列。
  • round():对数字进行四舍五入。
  • set():创建一个新的集合。
  • str():将值转换为字符串。
  • tuple():创建一个新的元组。
  • type():返回值的类型。

函数式方程

使用函数来定义计算的编程范式称为函数式编程。不可更改状态的概念是函数式编程的关键定义特征之一。

计算是通过命令式编程中的语句完成的,这可以说是您已经熟悉的最流行的编程范式。这些命令会影响变量的值,从而影响执行后的计算状态。例如,for 循环可以重复执行一条语句,每次更改变量的值,如下所示:

counter = 0
for i in range(10):counter += 1

在循环的每次迭代中,计数器的值每次增加 1 时,计算状态都会发生变化,使其更接近结束状态。

高阶函数

在函数式编程中,高阶函数是我们定义计算的主要工具。这些是将函数作为参数并返回函数作为结果的函数。Reduce()、map() 和 filter() 是 Python 中最有用的三个高阶函数。当与更简单的功能配对时,它们可用于执行复杂的操作。

下面的代码示例演示了一个高阶函数。print greeting() 接受两个参数:函数 f 和名称 n,并返回调用 f 的结果。(n)

def greet(name):return "Hello, {}!".format(name)
def print_greeting(f, n):print(f(n))

函数标注

之前我们讨论的是简单的自定义函数形式,我们并不知道函数的参数类型和返回值类型,其实函数可以写得更加详细一些,这就要用到函数标注了。

所谓函数标注就是用户自定义函数中的类型的可选元数据信息。

函数标注是以字典的形式存放在 __annotations__ 属性中的。我们在参数的名称后面加上冒号,后面跟一个表达式,那么这个表达式会被求值为标注的值。对于返回值来说,返回值标注的定义是加上一个组合符号 ->,后面跟一个表达式,该标注位于形参列表和表示 def 语句结束的冒号之间。

举个例子:

>>> def f(ham: str, eggs: str = 'eggs') -> str:
...     print("Annotations:", f.__annotations__)
...     print("Arguments:", ham, eggs)
...     return ham + ' and ' + eggs
...
>>> f('spam')
Annotations: {'ham': <class 'str'>, 'return': <class 'str'>, 'eggs': <class 'str'>}
Arguments: spam eggs
'spam and eggs'

其实使用函数标注写出来的程序更加清晰,可读性更高。

往期精彩文章:

基本线性数据结构的Python实现icon-default.png?t=M85Bhttps://blog.csdn.net/qq_46939030/article/details/128400244?spm=1001.2014.3001.5501

python基本概念icon-default.png?t=M85Bhttps://blog.csdn.net/qq_46939030/article/details/128387752python特点及优势icon-default.png?t=M85Bhttps://blog.csdn.net/qq_46939030/article/details/122613405利用python爬取散文网文章的实列icon-default.png?t=M85Bhttps://blog.csdn.net/qq_46939030/article/details/122557032

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

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

相关文章

读研2年,我选择从中科院退学转行做码农

从入学天坑材料专业到退学 先自我介绍一下&#xff1a;我天坑材料专业&#xff0c;本科某211&#xff0c;保研到中科院&#xff0c;但是我真是菜的抠脚&#xff0c;还懒&#xff0c;也不喜欢科研&#xff0c;论文达不到毕业要求&#xff0c;纠结之下研三退学转码农了。 读了2…

JVM【垃圾回收相关概念和垃圾回收器】

垃圾回收相关概念 System.gc()的理解 在默认情况下&#xff0c;通过**system.gc&#xff08;&#xff09;**者Runtime.getRuntime().gc() 的调用&#xff0c;会显式触发FullGC&#xff0c;同时对老年代和新生代进行回收&#xff0c;尝试释放被丢弃对象占用的内存。 然而syste…

做跨境电商,如何从同类产品中脱颖而出?

随便打开一个跨境电商平台&#xff0c;你会发现自己售卖的产品有那么多类似的选择&#xff0c;如何确保你的产品能被客户选择&#xff1f;怎样在一系列产品中脱颖而出&#xff1f; 不少卖家提到了&#xff0c;搞差异化竞争&#xff0c;这是跨境电商卖家常挂在嘴边的一个词&…

k8s使用glusterfs(静态供给、动态供给)、glusterfs的安装与使用

目录前言主机准备配置主机名、关闭防火墙、关闭selinux挂载磁盘安装glusterfs服务端glusterfs的端口分布式集群的结构组成glusterfs集群创建存储卷启动卷k8s使用glusterfs作为后端存储&#xff08;静态供给glusterfs存储&#xff09;恢复初始化环境安装Heketi 服务&#xff08;…

fpga实操训练(signal tap调试)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 编写软件的同学都知道&#xff0c;如果需要调试软件的话&#xff0c;除了要学会打印信息日志之外&#xff0c;另外一个很重要的方面&#xff0c;就…

maven的插件(命令)install介绍

maven的插件&#xff08;命令&#xff09;install介绍背景关于构建时使用的maven命令installmaven其他插件/命令的使用背景 今天在引入SpringCloudAlibaba时&#xff0c;pom.xml中的dependency报错了 到本地仓库去验证 验证无误&#xff0c;找原因 现象&#xff1a; 在maven…

数据挖掘期末-图注意力模型

PyGAT图注意力模型 ​  PyGAT实现的分类器&#xff1a; https://www.aliyundrive.com/s/vfK8ndntpyc 还在发烧&#xff0c;不是特别清醒&#xff0c;就简单写了写。用GAT进行关系预测&#xff0c;GAT可能是只做中间层&#xff0c;不过本来在GAT这一层就为了能懂就简化了很多…

Linux-系统随你玩之--用户及用户组管理

一、用户基本介绍 Linux 系统是一个多用户多任务的操作系统&#xff0c;任何一个要使用系统资源的用户&#xff0c;都必须首先向系统 管理员申请一个账号&#xff0c;然后才可以以这个用户登陆系统。 二、Linux中用户和组 2.1、用户和组介绍 用户&#xff1a; 每一个用户都…

如何不改一行代码,让Hippy启动速度提升50%?

导读&#xff5c;Hippy使用JS引擎进行异步渲染&#xff0c;在用户从点击到打开首屏可交互过程中会有一定的耗时&#xff0c;影响用户体验。如何优化这段耗时&#xff1f;腾讯客户端开发工程师李鹏&#xff0c;将介绍QQ浏览器通过切换JS引擎来优化耗时的探索过程和效果收益。在分…

微导纳米科创板上市:市值125亿 无锡首富王燕清再敲钟

雷递网 雷建平 12月23日江苏微导纳米科技股份有限公司&#xff08;简称&#xff1a;“微导纳米”&#xff0c;股票代码为&#xff1a;“688147”&#xff09;今日在科创板上市。微导纳米此次发行4544.55万股&#xff0c;发行价为24.21元&#xff0c;募资总额为11亿元。微导纳米…

对Python的学习【如何查看路径和安装包】

1&#xff1a;怎么查看本地电脑的Python版本号及安装路径&#xff1a; 对于Windows平台&#xff0c;打开cmd 使用命令py -0p 【其中0是零】 显示已安装的 python 版本且带路径的列表&#xff0c;参见下图&#xff1a; 其中带星号*的为默认版本。 2:怎么查看python pip…

认识 Fuchsia OS

认识 Fuchsia OS 1 说明背景 1.1 基本信息 开发者: Google编程语言: C、C、Rust、Go、Python、Dart内核: Zircon运作状态: 当前源码模式: 开放源代码初始版本: 2016年8月15日支持的语言: 英语支持平台: ARM64、X86-64内核类别: 微内核 基于能力 实时操作系统许可证: BSD 3 c…

腾讯焦虑了,一向温文尔雅的马化腾也发脾气了

大家好&#xff0c;我是校长。昨天小马哥内部讲话在互联网上疯传&#xff0c;这应该是&#xff0c;腾讯这家公司创办以来&#xff0c;马化腾最焦虑也最外露的一次讲话了&#xff0c;重点大概涉及 3 大方面&#xff0c;8 大项内容&#xff1a;1、所有业务线 ROI 化&#xff0c;再…

该怎么选择副业,三条建议形成自己的副业思维

受经济环境的影响&#xff0c;许多年轻人觉得原来稳定的工作不那么稳定&#xff0c;看着周围的朋友因为企业破产和失业&#xff0c;生活变得没有信心&#xff0c;也想找到自己的副业&#xff0c;在紧急情况下赚更多的钱。所以&#xff0c;年轻人在选择副业时也面临着很多困惑&a…

LeetCode HOT 100 —— 581. 最短无序连续子数组

题目 给你一个整数数组 nums &#xff0c;你需要找出一个 连续子数组 &#xff0c;如果对这个子数组进行升序排序&#xff0c;那么整个数组都会变为升序排序。 请你找出符合题意的 最短 子数组&#xff0c;并输出它的长度。 思路 方法一&#xff1a;双指针 排序 最终目的是让…

2023春季招聘面试集锦:MYSQL数据库高频面试题

mysql索引的数据结构&#xff0c;各自优劣 索引的数据结构和具体存储引擎的实现有关&#xff0c;在MySQL中使用较多的索引有Hash索引&#xff0c;B树索引等&#xff0c; InnoDB存储引擎的默认索引实现为&#xff1a;B树索引。对于哈希索引来说&#xff0c;底层的数据结构就是…

SpringBoot:模块探究之spring-boot-starters

Spring Boot Starters 是一组方便的依赖描述符&#xff0c;您可以将它们包含在您的应用程序中。您可以获得所需的所有 Spring 和相关技术的一站式服务&#xff0c;而无需搜索示例代码和复制粘贴大量依赖项描述符。 例如&#xff0c;如果想使用 Spring 和 JPA 进行数据库访问&am…

前端小知识:文本分句、词、字(Intl.Segmenter)

5. 文本分字、词、句 参考文章&#xff1a; https://mp.weixin.qq.com/s/MLmi-Yoi9sez8-5DPtcBVw   官方文档&#xff08;构造参数&#xff09;&#xff1a; https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter/Segmenter   …

win环境mysql版本升级到5.7过程

win环境mysql版本升级到5.7过程&#xff0c;我win电脑里mysql版本是5.0&#xff0c;版本太老了&#xff0c;也不支持和nacos集成&#xff08;nacos至少需要5.6版本的mysql&#xff09;&#xff0c;思来想去还是要升级一下自己电脑的mysql版本&#xff0c;保守点升级到5.7吧&…

项目实战之旅游网(三)后台用户管理(下)

目录 一.查询用户角色 二.修改用户角色 三.修改用户状态 一.查询用户角色 一个用户可以有多个角色&#xff0c;我们也可以给某个用户分配某些角色&#xff0c;所以我们还需要新建一个实体类&#xff08;这个实体类需要放到bean下&#xff0c;因为这个实体类和数据据库不是对…