Python函数从入门到进阶

Python入门进阶:68 个 Python 内置函数详解 内置函数就是Python给你提供的,拿来直接用的函数,比如print.,input等。 截止到python版本3.6.2 ,python一共提供了68个内置函数,具体如下 abs()dict()help()min()setattr() all()dir()hex()next()slice() any()divmod()... 阅读详情

Python函数从入门到进阶

一、函数基础

1.1 什么是函数?

函数就是把一段代码打包成一个整体,可以重复使用。

python

# 没有函数:每次都要写一遍
print("hello")
print("hello")
print("hello")

# 有函数:只需定义一次,可以反复调用
def say_hello():
    print("hello")

say_hello()  # 调用
say_hello()  # 再调用

优点:

  • 代码复用,不用重复写

  • 代码更清晰,容易理解

  • 方便修改和维护


1.2 函数的定义与调用

python

# 定义函数
def greet():
    print("你好!")

# 调用函数
greet()  # 输出:你好!

带参数的函数:

python

def greet(name):
    print(f"你好,{name}!")

greet("小明")  # 输出:你好,小明!

1.3 函数的返回值

用 return 返回结果:

python

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

result = add(3, 5)
print(result)  # 8

没有 return 返回 None:

python

def say():
    print("hello")

result = say()  # 输出 hello
print(result)   # None

二、函数的参数

2.1 位置参数

按顺序传参,位置不能乱:

python

def info(name, age):
    print(f"姓名:{name},年龄:{age}")

info("小明", 18)  # 正确
info(18, "小明")  # 错误!类型不对

2.2 默认参数

给参数设置默认值,调用时可以不传:

python

def greet(name, msg="你好"):
    print(f"{msg},{name}!")

greet("小明")        # 你好,小明!
greet("小红", "早上好")  # 早上好,小红!

2.3 关键字参数

指定参数名传参,顺序可以乱:

python

def info(name, age):
    print(f"姓名:{name},年龄:{age}")

info(age=18, name="小明")  # 姓名:小明,年龄:18

2.4 可变参数

*args:接收任意多个位置参数(打包成元组)

python

def sum_all(*args):
    total = 0
    for num in args:
        total += num
    return total

print(sum_all(1, 2, 3))      # 6
print(sum_all(1, 2, 3, 4, 5)) # 15
**kwargs:接收任意多个关键字参数(打包成字典)

python

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

show_info(name="小明", age=18, city="北京")
# name = 小明
# age = 18
# city = 北京

2.5 参数解包

把列表或字典拆开作为参数传入:

python

# 列表解包(用 *)
nums = [10, 20]
def add(a, b):
    return a + b
print(add(*nums))  # 30

# 字典解包(用 **)
data = {"name": "小明", "age": 18}
def info(name, age):
    print(f"{name},{age}岁")
info(**data)  # 小明,18岁

三、变量作用域

3.1 局部变量与全局变量

python

# 全局变量(函数外)
x = 10

def test():
    # 局部变量(函数内)
    y = 20
    print(x)  # 可以访问全局变量
    print(y)  # 可以访问局部变量

test()
print(x)  # 可以访问
print(y)  # 报错!局部变量函数外不能访问

3.2 global 与 nonlocal

global:在函数内修改全局变量

python

x = 10

def test():
    global x
    x = 20  # 修改全局变量

test()
print(x)  # 20

nonlocal:在内层函数修改外层函数的变量

python

def outer():
    x = 10
    def inner():
        nonlocal x
        x = 20  # 修改外层函数的 x
    inner()
    print(x)  # 20

outer()

3.3 globals() 与 locals()

  • globals():查看所有全局变量

  • locals():查看所有局部变量

python

x = 10
y = 20

def test():
    a = 1
    b = 2
    print(locals())   # {'a': 1, 'b': 2}

test()
print(globals())  # {'x': 10, 'y': 20, ...}

四、特殊函数

4.1 匿名函数(lambda)

一句话函数,适合简单操作:

python

# 普通函数
def add(a, b):
    return a + b

# 匿名函数(等价)
add = lambda a, b: a + b

print(add(3, 5))  # 8

常用场景:

python

nums = [1, 5, 3, 9, 2]
# 按数字大小排序
nums.sort(key=lambda x: x)
print(nums)  # [1, 2, 3, 5, 9]

4.2 高阶函数

把函数当参数传递:

python

def greet(name):
    return f"你好,{name}"

def say_hello(func, name):
    print(func(name))

say_hello(greet, "小明")  # 你好,小明

常用高阶函数:

python

# map:对每个元素执行函数
nums = [1, 2, 3, 4]
result = list(map(lambda x: x*2, nums))
print(result)  # [2, 4, 6, 8]

# filter:过滤
nums = [1, 2, 3, 4, 5]
result = list(filter(lambda x: x > 3, nums))
print(result)  # [4, 5]

4.3 递归函数

函数调用自己:

python

def factorial(n):
    if n == 1:
        return 1
    return n * factorial(n-1)

print(factorial(5))  # 120

递归三要素:

  1. 终止条件(n == 1)

  2. 调用自己(factorial(n-1))

  3. 组合结果(n * ...)


五、进阶技巧

5.1 闭包

函数内部定义函数,并返回内部函数:

python

def outer(x):
    def inner(y):
        return x + y
    return inner

add = outer(10)
print(add(5))   # 15
print(add(20))  # 30

特点:内部函数记住了外层函数的变量 x。


5.2 装饰器

在不修改原函数的情况下,增加功能:

python

def timer(func):
    import time
    def wrapper():
        start = time.time()
        func()
        end = time.time()
        print(f"耗时:{end - start}秒")
    return wrapper

@timer
def test():
    time.sleep(1)
    print("执行完毕")

test()
# 执行完毕
# 耗时:1.000秒

本质:test = timer(test)


5.3 装饰器常用案例

1. 计时器

python

import time

def timer(func):
    def wrapper(*args, **kwargs):
        start = time.time()
        result = func(*args, **kwargs)
        print(f"{func.__name__} 耗时 {time.time() - start:.2f}秒")
        return result
    return wrapper

@timer
def sleep_test():
    time.sleep(1)

sleep_test()  # sleep_test 耗时 1.00秒
2. 日志记录

python

def logger(func):
    def wrapper(*args, **kwargs):
        print(f"调用函数:{func.__name__}")
        print(f"参数:{args}, {kwargs}")
        result = func(*args, **kwargs)
        print(f"返回值:{result}")
        return result
    return wrapper

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

add(3, 5)
# 调用函数:add
# 参数:(3, 5), {}
# 返回值:8
3. 权限验证

python

def login_required(func):
    def wrapper(user, *args, **kwargs):
        if user.get("is_login"):
            return func(user, *args, **kwargs)
        else:
            print("请先登录")
    return wrapper

@login_required
def profile(user):
    print("个人资料页面")

profile({"is_login": True})   # 个人资料页面
profile({"is_login": False})  # 请先登录

总结

内容要点
函数定义def 函数名():
返回值return
位置参数按顺序传
默认参数有默认值
关键字参数指名道姓
*args收多个位置参数
**kwargs收多个关键字参数
global修改全局变量
lambda匿名函数
递归函数调用自己
闭包函数里返回函数
装饰器给函数加功能

学习建议:从基础开始,多写代码练习,逐步掌握!😊

第十二篇:Python 入门-函数的进阶 在 Python 函数定义中,可以为参数指定默认值。这样在调用函数时,如果没有为该参数提供值,就会使用默认值。语法是在参数名后加上赋值运算符和默认值。在这个greet函数中,name是一个普通参数,而greeting参数被赋予了默认值"Hello"。 阅读详情

相关推荐

STM32H743内存告急?手把手教你用CubeMX+FMC外扩32MB SDRAM(W9825G6KH-6)

本文详细介绍了如何在STM32H743上使用CubeMX和FMC外扩32MB SDRAM(W9825G6KH-6),解决内存不足问题。从硬件选型、CubeMX配置到初始化代码实现,提供完整的配置教程和性能优化技巧,帮助开发者高效扩展内存,适用于图形界面和复杂算法处理。

weixin_30568591的博客 496

python入门第八天---函数进阶

本文介绍了Python函数返回值、函数的高级用法、命名空间与作用域的相关知识。主要内容包括:1)函数必须使用return返回值,否则默认返回None;2)函数可作为字典值、参数传递和返回值使用;3)命名空间分为内建、全局和局部三种,具有不同的生命周期;4)作用域分为全局和局部,遵循LEGB查找规则;5)global和nonlocal关键字的作用,分别用于修改全局变量和上层作用域变量。文章通过具体代码示例详细说明了这些概念的使用方法和注意事项。

2401_89464052的博客 2146

FunASR语音识别服务在Win11上的Docker部署避坑指南:模型配置与热词优化

本文详细介绍了在Windows 11系统上通过Docker部署FunASR语音识别服务的完整流程,包括环境准备、模型配置、热词优化及常见问题解决方案。特别针对Win11环境下的特殊配置和性能调优提供了实用指南,帮助开发者高效搭建高性能语音识别服务。

e3f4g5的博客 222

python编程入门十二:函数进阶

第十二章:函数 关于python的函数,我想分两章来完成,原因就是不管是哪门语言,函数都是一个内容相当多的一个机制

洪博hopes的博客 1238

PX4与ROS协同仿真:从键盘控制到无人机自主飞行

本文详细介绍了如何搭建PX4与ROS协同仿真环境,实现从键盘控制到无人机自主飞行的完整流程。通过XTDrone项目整合PX4飞控、ROS通信框架与Gazebo物理引擎,逐步讲解环境配置、键盘控制实现原理,并深入剖析了迈向Offboard模式实现自主飞行的核心代码与数据流,为无人机算法开发与测试提供了安全的仿真沙盒。

weixin_29169899的博客 499

Palantir解密:从企业数字化能力构成说起,“本体”如何破解现代企业数据应用难题?

抛开技术外壳来看,Palantir“本体”的理念内核其实并不复杂:构建一个统一、可操作的数字现实,以高效驱动决策与行动。其技术实施和产品沉淀的过程诚然是高复杂性、高难度的,但这正体现了Palantir所代表的新硅谷“All in AI+”的战略决心。对于我们而言,必须深刻认识到:企业数字化能力建设既不是高精尖技术的简单堆砌,也不是局部场景的数字化改良,而是一场企业级的“数字孪生”——关乎战略、组织与业务全域的体系能力的重塑。

SZSDQJC的博客 1685

Python入门——函数的进阶

按照返回值的顺序,写对应顺序的多个变量接收即可,变量之间用逗号隔开,支持不同类型的数据 return。

qq_68087137的博客 466

PCB布线避坑指南:为什么你的差分线等长总调不好?AD19蛇形等长技巧详解

本文详细解析了AD19环境下PCB差分线等长调整的核心技巧与常见问题。从差分信号等长的底层逻辑到AD19规则配置,再到蛇形等长高级技巧和信号完整性验证,帮助工程师解决差分线等长调整中的难题,提升高速PCB设计的信号质量。

weixin_28738397的博客 385

Python 函数详解:从入门到进阶

本文系统介绍了Python函数的核心概念与使用技巧。主要内容包括:函数基础(定义、调用、返回值)、参数类型(形参/实参、默认参数、可变参数)、变量作用域(全局/局部变量)、模块导入方法(import/from...import)、递归函数以及匿名函数lambda的使用。文章通过示例代码演示了如何封装可复用代码块、合理传递参数、管理变量作用域,并强调了函数在提升代码可读性和维护性方面的重要性。掌握这些函数知识是Python编程的基本功,能够帮助开发者编写更清晰、模块化的代码。

caitao1998的博客 964

AI测试入门:如何测试AI对话模型/智能体?「详细介绍」

作为测试人员,我们需要掌握特定的技能和方法来有效地测试这些复杂的AI对话模型和智能体。传统的软件测试方法在这里可能不再完全适用,我们需要开发新的测试策略和技术来应对AI系统的独特特性。在这篇文章中,我们将深入探讨如何测试AI对话模型和智能体。

blues_C的博客 6862

Adams Car——Adams car与Simulink联合仿真

Adams与simulink悬架联合仿真

Mr.邹的博客 2127

Python入门——函数进阶

qq_42803467的博客 276

【单智能体】AI 数据分析智能体案例讲解(附完整源码)

本案例将引导您构建一个基于 AI 的数据分析智能体,让用户能够通过自然语言查询来分析 CSV 和 Excel 文件中的数据,无需掌握 SQL 知识。该智能体使用 Agno Agent 框架集成 OpenAI GPT-4o 模型,并利用 DuckDB 提供高效的数据处理能力。

rengang66的博客 239

【Python入门】第6节 函数进阶

调用函数时根据函数定义的参数位置来传递参数。

D_AKJS 656

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

python从入门到精通:函数进阶

缺省参数也叫默认参数,用于定义函数,为函数提供默认值,调用函数时可不传该默认参数的值(注意:所有位置必须出现在默认参数前,包括函数定义和调用)注意:传进的所有参数都会被args变量收集,他会根据传进参数的位置合并为一个元组(tuple),args是元组类型,这就是位置传递。如果想要函数有多个返回值,只需要按照返回值的顺序,写对应顺序的多个变量接收即可,变量之间用逗号隔开,支持不同类型的数据return。注意:函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序。

2401_83283514的博客 1071

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Python函数(从入门到进阶)

函数本质上就是一段具有指定功能、可以反复使用的代码段,它是对代码的一种抽象。 在Python中,我们经常听到位置参数、关键字参数、包裹(packing)位置参数和包裹(packing)关键字参数等概念,但很多人其实搞不清楚这些概念的本质区别。 本来只想介绍Python中关于函数参数的相关知识,但出于完整性考虑,本文将按下面的过程进行讲解:函数的概念 => 函数的定义及调用 => 函数的执行环境 => 函数的参数 => 函数的高级话题。...

tangyi2008的专栏 746

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

python基础--函数入门与进阶

函数参数的使用 Python函数参数的使用方法如下: 位置参数 位置参数:位置参数是指在调用函数时,按照函数定义时参数的位置顺序传递参数的方式。 例如: def add(x, y): return x + y result = add(1, 2) print(result) # 输出3 在上面的例子中,add 函数有两个位置参数 x 和 y,在调用函数时,按照参数的位置顺序传递了两个参数,分别是 1 和 2。在使用位置参数时,需要按照函数定义时参数的位置顺序传递参数,以确保函数能够正确地执行

weixin_50804299的博客 4039

python入门,函数的进阶

使用lambda定义一个匿名的函数,或者说是无名称的函数,这个函数只可以临时使用一次。函数体只能写一行,可以不用写return,它会自动帮我们return。用星号*的关键字可以表明某个形式参数接受的参数数量是无限个的。提供默认值,如果没有传递对应的参数,就会使用默认的参数。使用两个星号,按照key = value的形式传入值。通过键=值的形式去传递参数,并且不需要保证顺序一致。这是一种计算逻辑的传递,而不是数据的传递。加上逗号,一个函数每次就能返回多个值。就是我们平时写函数时所使用的形式。

2301_79431343的博客 641

Python——入门进阶之函数

1>全局变量:直接定义在模块的变量,作用域横跨全局 函数本身是一个全局变量 Python中不能在内部修改全局变量,如果需要更改,则一定要使用global关键字。1.默认值参数: 在函数定义时,如果某一个或者某一些参数,在大多数调用情况下使用,我们为了减少调用麻烦,可以设置默认值参数。2>局部变量:本地变量,函数内部定义的变量 在函数内部定义的形式参数是局部变量。4.参数: 默认参数(位置参数) > 默认值参数 > 可变参数 > 关键字参数(命名参数)1.匿名函数(lambda):没有名称的函数。

2402_83677515的博客 351

python入门(七)——python函数进阶

python入门(七)——python函数进阶

Vapus的博客 1069

python入门开发笔记之函数进阶

本节重点: 使学生掌握函数名称空间、闭包、装饰器知识 本节时长需控制在 分钟内 名称空间 又名name space, 顾名思义就是存放名字的地方,存什么名字呢?举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的地方 名称空间共3种,分别如下 locals: 是函数内的名称空间,包括局部变量和形参 globals: 全局变量,函数定义所在模块的名字空间 builtins: 内置模块的名字空间 不同变量的作用域不同就是由这个变量所在的命名空间决定的。 作用域即范

Python_0011的博客 2378

【新人系列】Python 入门(十三):函数进阶

📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们一起交流~📚 专栏简介:在这个专栏,我将带着大家从 0 开始入门 Python 的学习。在这个 Python 的新人系列专栏下,将会总结 Python 入门基础的一些知识点,方便大家快速入门学习~

Newin2020的博客 1771

python函数进阶小结_Python入门及进阶笔记 Python 内置函数小结

内置函数常用函数1.数学相关•abs(x)abs()返回一个数字的绝对值。如果给出复数,返回值就是该复数的模。复制代码 代码如下:>>>print abs(-100)100>>>print abs(1+2j)2.2360679775•divmod(x,y)divmod(x,y)函数完成除法运算,返回商和余数。复制代码 代码如下:>>> divmod(10,3)(3, 1)>>> divmod(9,...

weixin_39559750的博客 154

Python入门-函数进阶

  昨天我们简单的了解了函数的定义,调用,以及传参,其实还有一个更重要的传参:动态传参,让我们继续昨天没有说完的,以及今天我要分享的东西. 一.动态传参   之前我们说过了传参,如果我们需要给一个函数传参,而函数又是不确定的,或者我给一个函数传很多参数,我的形参就要写很多,很麻烦,怎么办呢?我们可以考虑用动态参数   形参的第三种:动态参数   动态参数分两种:   1.动态接...

aibing0103的博客 194

带你从入门到精通——Python(六. 函数进阶)

所谓递归,就是会在函数内部代码中,调用这个函数本身,所以,我们必须要找出递归的结束条件,不然的话,会一直调用自己,进入无底洞。也就是说,我们需要找出当参数为何值时,递归结束,之后直接把结果返回,请注意,这个时候我们必须能根据这个参数的值,能够直接知道函数的结果是什么,而不需要继续向下递归。对于递归,很重要的一个事就是,这个函数的功能是什么,它要完成什么样的一件事,而这个,是完全由你自己来定义的。最后一个要是是我们要不断缩小参数的范围,缩小之后,我们可以通过一些辅助的变量或者操作,使原函数的结果不变。

2401_86480334的博客 1289

python函数手册_Python入门及进阶推荐书单

本文与大家分享一些Python编程语言的入门书籍,其中不乏经典。我在这里分享的,大部分是这些书的英文版,如果有中文版的我也加上了。有关书籍的介绍,大部分截取自是官方介绍。文末有福利。Python基础教程(Begining Python)评语:Python入门佳作 经典教程的全新修订 10个项目引人入胜《Python基础教程(第2版·修订版)》是经典的Python入门教程,层次鲜明,结构严谨,内容翔...

weixin_39765209的博客 143
上一篇: Python 函数从入门到上手:一篇讲透定义、调用与参数
下一篇: Python 类(Class)零基础入门指南
python666Lc
博客等级 码龄126天 1粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值