学习笔记:Python之函数的介绍

认识函数

函数的介绍及结构

def 函数名(参数1,参数2,参数3,参数4....):
	函数体
	[返回值]

注意:

  • 函数主要有两部分组成: 函数的声明部分和函数的实现部分
  • def 是define的简写,表示定义函数
  • 函数名需要遵循标识符的定义规则,尽量做到见名知意
  • 函数名后面的():表示参数列表,参数列表可以为空
  • 返回值:一般用于结束函数的执行过程。如果有返回值,该返回值则表示函数执行的结果,如果没有,就相当于返回了一个None
  • 函数定义后并不会自动执行,需要进行调佣才会执行函数
  • 函数必须先定义,才能进行调用
  • 一个函数可以进行多次调用
  • 在一个程序中,如果有两个相同的函数名,后面的函数会覆盖前面的函数内容。
    示例
def test():
	print('Hello World')
test()

def test():
	print('你好')
test()

test()
test()

函数的分类

  1. 函数根据定义方式分为:
    - 内置函数:如input()、print()等Python自带的函数
    - 自定义函数:需要自己定义功能的函数
  2. 函数根据有无参数分为:
    - 有参数函数:顾名思义,函数定义了参数列表,函数定义时传输的参数叫做形参,函数调用时传入的参数叫做实参
    - 没有参数的函数:就是函数定义时没有设置形参
  3. 根据有无函数名分为:
    - 有名的函数:以上说的种种皆为有名的函数,需要给定义的函数设置函数名
    - 匿名函数:即乜有名字的函数,通过lambda进行定义
  4. 根据有无返回值分为:
    - 有返回值的函数:函数中通过return结束进行,并返回某个值
    - 无返回值的函数:函数运行中不会自动,直到知道函数运行完毕

示例

# 内置函数
print('这是Python内置的函数')

# 自定义函数
def fn1():
	print('这是一个没有参数,没有返回值的自定义函数')
fn1()

# 有参数的函数
# a,b 是形参--只是一个容器,并不确定是什么类型的数据,具体是什么数据
def fn2(a,b):
	print(a+b)
# 里面的1,3是实参--实际的参数,知道具体的数据
fn2(1,3)
# 传参:是指实际参数传给形式参数的一个过程

# 有返回值的函数
def fn3():
	return '这是一个没有参数但有返回值的函数'
print(fn3())

注意:

  • 在有返回值的函数中,返回数据使用return关键字返回,如果想直观的看到返回的数据,可以直接使用print()方法输出函数,也可以通过定义变量来接收函数返回的结果
  • 函数的返回结果可以是一个,也可以是多个,若返回多个结果,则需要通过逗号隔开,返回的结果是一个元组的形式
  • 在函数执行过程中遇到return就会直接返回结果,结束函数的执行,不会执行return后面的程序
  • 在函数中若没有return或者return后面没有返回的结果,则默认返回None
  • 一般情况下形参和实参的数量是保持一致的
  • 在函数中,形参和实参的变量名可以一样,也可以不一样,这不会产生任何影响,因为两者本质上是独立内存

函数中参数的类型

必须参数

在调用函数时,必须按照正确的顺序传入参数,且实参的数量必须和形参保持一致

def Stu(name,age):
	print(f'我的姓名是:{name},年龄是{age}')
Stu('张三',25)	# 正确
Stu(25)	#  报错
关键字参数

函数中如果使用了关键字参数,那么在函数调用时,允许实参和形参的顺序不同,关键字参数会通过关键字自动进行匹配参数

def Stu(name,age):
	print(f'我的姓名是:{name},年龄是{age}')
Stu(name='张三',age=25)
Stu(age=25,name='张三')
默认参数

函数在定义时,给形参进行了赋值,如果在函数调用时没有传入该参数,则使用默认参数,如果传入了该参数,则使用传入的参数
注意,如果参数列表中有默认参数,那么需要把默认参数放在参数列表最后

def fn(a,b=53):
	print(a+b)
fn(10,20)
fn(20)
不定长参数

不定长参数有两种类型:

  • *args:用来接收多个数据,得到的参数会以元组的形式传入
  • **kwargs:用来接收多个关键字参数,得到的参数会以字典的形式传入
    注意:函数中如果有普通参数和不定长参数时,不定长参数必须在普通参数列表后面
def fn1(*args):
	print(*args)
fn1(12,20,45,30)

def fn2(**kwargs):
	print(**kwargs)
fn2(name='Mike',age=40,gender='Female')

def fn3(*args,x):
	print(*args,x)
fn3(1,False,10.2,2)

参数顺序:普通参数、默认参数、不定长参数

函数的嵌套

函数之间可以互相嵌套,执行函数时,会在遇到嵌套函数时,从最底层的函数开始执行

def fn1():
	fn2()
	print(1111)

def fn2():
	fn3()
	print(2222)

def fn3():
	fn4()
	print(3333)

def fn4()
	print(4444)

fn1()

'''
输出结果为:
4444
3333
2222
1111
'''

匿名函数

匿名函数即定义的函数没有函数名,创建函数时需要使用lambda表达式

特点:
lambda只是一个表达式,函数简单
lambda一般情况下只会有一行,有参数、函数实现体、返回值
表达式:
lambda 参数列表:函数体部分(包括返回值)

# 普通函数
def fn(x):
	return x**2
print(fn(4))

# 匿名函数
res = lambda x: x**2
print(res(3))

res2 = lambda x,y : x+y
print(res(2,6))

# 匿名函数中也可以使用默认参数
res3 = lambda x,y =6: x*y
print(res(3))
print(res(2,5))

回调函数

回调函数是将一个函数的函数名作为参数传入另一个函数,在另一个函数中,通过调用这个函数的函数名来实现调用函数

# 加法
def jia(x,y):
	print(x+y)
# 减法
def jian(x,y):
	print(x-y)
# 乘法
def cheng(x,y):
	print(x*y)
# 除法
def chu(x,y):
	print(x/y)

# 回调函数
def jisuan(x,y,fn)
	fn(x,y)

# 加法
jisuan(2,6,jia)
# 减法
jisuan(5,2,jian)
# 乘法
jisuan(2,8,cheng)
# 除法
jisuan(8,1,chu)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

(#`O′)凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值