说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
把经常用到的处理逻辑代码定义一个函数,以后在任何时候可以使用它,这样就大大节省我们的时间和脑力。函数提高了代码的重复利用率,让代码逻辑更加简洁高效。
def <函数名>(<参数>):
"""<函数说明>"""
<函数代码>
<pass>
return <返回内容>
格式说明:
def
:定义函数的关键字,所有函数都由它来引导,空格后跟着函数名return
:函数经过逻辑处理后最终返回的内容,空格后跟着返回值pass
:如果函数什么都不做,或者部分分支逻辑不干啥,可以用它()
def city_tier(city_name):
"""返回一个城市是否一线城市"""
first_tier = ['北京', '上海', '广州', '深圳']
if city_name in first_tier:
return '一线城市'
else:
return '非一线城市'
说明:
调用:
city_tier('杭州') # '非一线城市'
city_tier('上海') # '一线城市'
可以定义一个空函数,经常用于已经有规划但目前没日时间写:
def nothing():
pass
函数的调用非常方便,可以把函数赋值给变量,然后以变量去调用,也可以把调用结果赋值给变量,也可以在函数中调用函数。
# 如果不按要求传参数会报错
city_tier() # TypeError
# 把调用结果赋值给变量
sh = city_tier('上海') # sh: '一线城市'
sh = f'上海是{city_tier("上海")}' # '上海是一线城市'
# 把函数传给变量,然后用此变量调用
ct = city_tier
ct('青岛') # '非一线城市'
如无定义参数不能传入参数:
def me():
print('我是好人!')
me() # 我是好人!
我们可以定义一个可选参数的函数:
def web(name='盖若'):
print(f'{name}是个好网站')
web() # 盖若是个好网站
web('新浪') # 新浪是个好网站
一般函数都会有一个返回值,并有返回的类型:
type(city_tier('杭州')) # str
type(web()) # NoneType
我们发现,web()
函数由于没有使用 return
是一个 NoneType
。
def circle(r):
"""计算圆的周长和面积"""
l = 2*3.14*r
s = 3.14*(r**2)
return l, s
# 调用
circle(4) # (25.12, 50.24)
我们发现返回的两个值,其实是一个元组。
要注意的是:
详见:return 语句 。
定义函数时可以灵活定义参数默认值、关键字参数、不定长度的参数等,我们一下节将详细介绍。
复杂的参数定义目的是为了让函数更加通用,功能更加丰富,应对更多场景的使用。
递归函数就是自己内部调用自己,以下是一个斐波那契数列的例子,可以实现第几位是什么值。
def fibo(n):
if n == 1 or n == 2:
return 1
else:
return fibo(n-1) + fibo(n-2)
fibo(4) # 3
更新时间:2024-06-02 15:00:43 标签:python 函数