[Python] Python 函数

本文详细介绍了Python函数的定义、调用方法,包括函数结构、参数传递、参数类型如必备参数、关键字参数、默认参数和不定长参数。还探讨了函数返回值、变量作用域、匿名函数(lambda表达式)、filter、map和reduce函数,以及函数对象和闭包的概念。通过本文,读者将对Python函数有更深入的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

Python 函数定义和调用

如何定义函数

函数结构

函数调用

Python 参数传递

Python 参数类型

必备参数

关键字参数

默认参数

不定长参数

Python函数返回值

Python 变量作用域

Python匿名函数

         lambda 函数

         filter函数

         map函数

         reduce函数

函数对象

函数闭包


Python 函数定义和调用

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 
函数能提高应用的模块性,和代码的重复利用率。 
Python函数分为内置函数和自定义函数。 
内置函数例如print()。 
程序员也可以自己创建函数,这被叫做用户自定义函数。 
简单来讲:函数就是编程中最基本的魔法,但同时一切的复杂又都被隐含其

如何定义函数

简单的规则: 
 函数代码块以 def(全拼:define 定义) 关键词开头,后接函数标识符名称和圆括号()。 
 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。 
 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 
 函数内容以冒号起始,并且缩进。 
do [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的do相当于返回 None。

函数结构

def functionName(arg1,arg2,……):
    do something

释义:
def 函数名称(参数1,参数2,……):
    执行语句

【注意】 
•def和do是关键字(keyword),不可用作函数命名,Python就是靠识别这些特定的关键字来明白用户的意图,实现更为复杂的编程 
闭合括号后面的冒号必不可少且必须使用英文输入法进行输入,否则就是错误的语法 
•默认情况下,参数值和参数名称是按函数声明中定义的的顺序匹配起来

函数调用

定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。可是它并不会执行。此时的函数就好像家里的洗衣机没有按开关一样,需要调用函数才可以执行。

image_1d53cenfj13e31fh9m8c1frot3t9.png-61.1kB

Python 参数传递

参数传递的两种方式:值专递和引用传递 
①值传递,原数据不受影响 
数字、字符串和元组(numbers、strings、tuples)是不可更改的对象,是值传递

image_1d53hvkkr1lj64ej15d61dhq164516.png-88.2kB

②引用传递,原数据受影响 
list,dict则是可以修改的对象,是引用传递。

image_1d53i75gdo3omer1noh1njj12pm1j.png-116.6kB

Python 参数类型

调用函数时可使用的正式参数类型有四种: 
• 必备参数 
• 关键字参数 
• 默认参数 
• 不定长参数

必备参数

必备参数:执行的时候,必须得有,且按照顺序传入

image_1d53lt8f091o60mprb1e4p12kv9.png-95.9kB

关键字参数

关键字参数:执行的时候给参数赋值,可以不管顺序

image_1d53lvbm11bqk195vd2e1umm186415.png-92.9kB

默认参数

默认参数,也叫缺省参数:在定义的时候给参数赋值。执行时,若有给值,以给值为准,否则以定义的默认值为准。

image_1d53m0mueif91dcl7m8oii1uh11i.png-79.1kB

不定长参数

语法结构:

def func(a,b,*args,**kwargs):

释义:
a,b 表示普通参数
args 元组 收集多余参数放到元组内
kwargs 字典 收集赋值型参数放到字典内

注意:*args 与 **kwargs 参数名称可以是其他名称,不是固定的

image_1d53m3r1v1v721o641e1n1df5fs11v.png-101kB

Python函数返回值

函数返回值关键字为return 
该语句表示退出函数,在函数中可存在可不存在,当存在时向调用方返回一个表达式的值。不带参数值的return语句返回值为None。

Python 变量作用域

一个程序的所有的变量并不是在哪个位置都可以访问的。 
访问权限决定于这个变量是在哪里赋值的。 
变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。 
两种最基本的变量作用域是:• 全局变量 • 局部变量 
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。 
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。 
调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。 
局部变量调用全局变量关键字:global 
image_1d53qdrne109i1488197q1bdvlf23p.png-179.8kB

Python匿名函数

定义函数的过程中,没有给定名称的函数就叫做匿名函数。 
Python中使用lambda表达式来创建匿名函数。用lambda 来创建匿名函数的规则:

●lambda只是一个表达式,函数体比def简单很多 
●lambda的主体是一个表达式,而不是一个代码块,所以不能写太多的逻辑进去 
●lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数 
●lambda定义的函数的返回值就是表达式的返回值,不需要return语句块 
●lambda表达式的主要应用场景就是赋值给变量、作为参数传入其它函数

lambda 函数

lambda匿名函数的表达式规则是:lambda 参数列表: 表达式

image_1d565ou091vof8bi1k971m32hgj9.png-107.2kB

image_1d565r3nku6ggvn1nqu1s4141cm.png-94.1kB

filter函数

image_1d567kle01ppu1g8q16podpgak23.png-146.6kB

image_1d568haup11fe1ooh18kk14ggjsq3q.png-112.2kB

map函数

image_1d567muss2fpp9s1qk511bcoqr2g.png-161.4kB

image_1d568jf0voi912l817pqr8h1bos47.png-97.1kB

reduce函数

image_1d568g29u1aop12io1c721sparp22t.png-224.3kB

image_1d56a4pih1ateo4880o1eqd14f954.png-113.6kB

函数对象

函数是对象,可以给函数增加属性。

image_1d56cee6814dq19bp17k26uf1vnr5h.png-44.9kB

函数闭包

image_1d56cf3np1g8214r5a3vi8v1s3l6e.png-123.9kB

image_1d56cgj68f1dkam11s21n1rbof6r.png-86kB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值