函数基本概念和函数参数、作用域

本文介绍了Python函数的基本概念,包括函数的定义、调用、返回值、参数类型(必备、默认、不定长)以及作用域。通过示例解释了全局变量、局部变量、闭包和递归函数的用法,并探讨了匿名函数、过滤器、映射和数据配对等高级特性。

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

函数的定义和调用

##while True:

phone = input(‘请输入一个手机号:’)

if phone.isdigit() and len(phone)==11:

print(‘这是一个正确的手机号’)

break

else:

print(‘这不是一个手机号’)

自定义函数

def是定义函数的关键字

isPhone是函数名(自定义)

括号里的phone是参数

函数调用:函数名(参数值)

##def isPhone(phone):

if phone.isdigit() and len(phone)==11:

print(‘这是一个正确的手机号’)

else:

print(‘这不是一个手机号’)

返回值 return

当不存在返回值的时候,默认返回None

当存在返回值的时候,返回具体的数据

##def func(x,y):

print(x)

print(y)

return x+y

print(111) # 返回值后面的代码不会执行

##res = func(1,2) # res得到返回出去的结果(x+y)

func函数名,代表函数体,也就是函数本身

func(1,2),代表函数调用,也就是函数执行之后的结果

函数的参数,参数没有数据类型的限制

顺序:先必备,再默认,最后不定长

1.必备参数(x),定义了几个必备参数,函数调用就需要传几个参数值,一个也不能多,一个也不能少

2.默认参数(y),y的默认值为2,当不给默认参数传值的时候,会把默认值给默认参数接收,当传值,就是我们传进去的值

3.不定长参数(*args,**kwargs)

args是不定长参数,数据放在元组里面

kwargs也是不定长参数,数据放在字典里面,键只能是字符串类型

args和kwargs都不是规定写法,但是这是规范写法

##def func(x,y=2,*args,**kwargs):

print(x)

print(y)

print(args)

print(kwargs)

-> str这种语法指明这个函数的返回值是什么数据类型

##def func(x,y=2,*args,**kwargs) -> str:

print(x)

print(y)

print(args)

print(kwargs)

return ‘abc’

拆包

##def func(x,y=2,*args,**kwargs):

print(x)

print(y)

print(args)

print(kwargs)

函数的作用域

##x = 100 # 全局变量
##def func():

# 在函数里面对外部定义的x进行修改

y = 200 # 局部变量

x = x+1

print(x)

##x = 100
##def func():

global x # 声明全局变量

x = 200

print(x)

##print(x) # 100
##func() # 200
##print(x) # 200

##def func1():

x = 100

def func2():

nonlocal x # 声明局部变量

x = x+1

print(x)

return func2()

闭包

##def func():

lv = 5

# 增加血量

def func1():

nonlocal lv

lv += 1

print(lv)

# 减少血量

def func2():

nonlocal lv

lv -= 1

print(lv)

# 外层函数返回内层函数的函数体,这就是闭包

return func1,func2

##def func():

def func1():

print(111)

return func1

递归函数:自身调用自身

#func(5)

->func(4)*5

->func(3)45

->func(2)34*5

->func(1)2345

->12345=120

##def func(n):

if n==1:

return 1

else:

return func(n-1)*n

匿名函数

通过lambda关键字定义

匿名函数会自动返回,x是参数

##a = lambda x:x+1

上面的匿名函数相当于下面的有名函数

##def a(x):

return x+1

##li = [2,4,6,8,10]
##def func(x):

if x>5:

return x

filter():过滤器

第一个参数是函数体,第二个参数是可迭代对象

##print(list(filter(func,li)))

##print(list(filter(lambda x:x>5,li)))

map():对于元素进行统一操作

第一个参数是函数体,后面可以是一个或者多个可迭代对象

##li = [2,4,6,8,10]
##print(list(map(lambda x:x-1,li)))

zip():把两个可迭代对象合成一个字典,实现数据配对

##tu = (‘a’,‘b’,‘c’)
##li = [2,4,6]
####print(dict(zip(tu,li)))
##print(list(zip(tu,li)))

回调函数:把一个函数的函数体当做参数传递给另外的一个函数去使用

##def func1(f):

f()

print(111)

##def func2():

print(222)

##func1(func2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一逍倾城

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

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

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

打赏作者

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

抵扣说明:

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

余额充值