函数的基本使用
函数的定义
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段,提高应用的模块性,和代码的重复利用率,Python
提供了许多内建函数,比如print()
len()
。但也可以自己创建函数,这被叫做用户自定义函数。
函数的语法结构
函数必须先定义再调用,函数的定义就是先将函数体代码保存起来,然后通过内存地址赋值给函数名,函数名就是对这段代码的引用,与变量的定义很相似
语法
def 函数名(参数1,参数2,...):
"""文档描述"""
函数体
return 值
参数:
- def: 定义函数的关键字
- 函数名:函数名指向函数内存地址,是对函数体代码的引用,函数的命名应该反映出函数的功能
- 括号:括号内定义参数,参数是可有可无的,且无需指定参数的类型
- 冒号:括号后要加冒号,然后在下一行开始缩进编写函数体的代码
- “””文档描述”””: 描述函数功能,参数介绍等信息的文档,非必要,但是建议加上,从而增强函数的可读性
- 函数体:由语句和表达式组成
- return 值:定义函数的返回值,return是可有可无的
补充:
- 查看函数内部源码,
windows
按ctrl
+点击,mac
按command
+点击 - 定义函数的过程不会执行函数体代码,只会检测语法
使用
# 假如要计算字符串的长度,在不使用`len()`函数的情况下
s = 'abcdefgh'
# 不使用函数的代码
count = 0
for i in s:
count += 1
print('字符串的长度是:%s' % count)
# 8
# 使用函数的代码
def str_len(len_str):
n = 0
for a in len_str:
n += 1
print('字符串的长度是:%s' % n)
return
str_len(s) # 直接调用,通过输入的字符串直接计算,非常方便
# 8
str_len('asdasdasd')
# 9
函数的分类
内置函数
python解释器提前定义好可以直接调用的函数,比如print()
len()
自定义函数
自己编写的函数,为无参函数、有参函数、空函数
无参函数
在构造函数中,括号内没有参数
def index():
print('Hello,World!')
index() # 调用也不需要写参数
有参函数
在构造函数中,括号内有参数(类似于变量名)
def index(s):
print('Hello,World!', s)
index('Hello,World!')
空函数
在构造函数中,函数体的代码先用pass
占位
def index():
pass
补充:在项目前期中,更快的搭建出功能框架
函数的返回值
函数的返回值其实就是在调用函数之后返回的值
- 当函数体代码没有
return
关键字的时候,返回值是None
def index_1():
s = 'Hello,World!'
a = index_1()
print(a)
# None
- 当函数体
return
后面没有跟任何值得时候,返回值也是None
def index_2():
s = 'Hello,World!'
return
a = index_2()
print(a)
# None
- 当函数体代码写了
return
并且跟了数据 那么写什么就返回什么
def index_2():
s = 'Hello,World!'
return s
a = index_2()
print(a)
# Hello,World!
4.return
后面还可以跟多个值用逗号隔开,会自动组织成元组返回出去后
def index_3():
s = 'Hello, World!'
return s, s, s
a = index_3()
print(a)
# ('Hello, World!', 'Hello, World!', 'Hello, World!')
- 函数体代码遇到
return
会立刻结束函数运行,相当于循环体代码里面写break
,遇到就立刻结束函数和循环的执行
函数的调用
函数的调用一定是先定义好再调用,并且函数体的代码只有调用才能执行,不调用只能用来检测语法
使用
函数名(参数1, 参数2, 参数3...) # 参数可有可无,如果有则传递参数
# 函数名指向的是内存中函数体代码所在的位置
形式
语句形式
def test_1():
print(1+2)
test_1(3)
表达形式
def test_2(x, y):
return x + y
a = test_2(1, 2) # 将调用函数的返回值赋值给a
print(a)
# 3
b = 10 * test_2(2, 2) # 将调用函数的返回值乘以10的结果赋值给b
print(b)
# 40
函数调用作为参数的形式
def test_3(x, y):
return x + y
a = test_3(1, test_3(1, 2)) # 将函数`test_3(1, 2)`当作第二个参数,外面在嵌套一个`test_3`最终结果赋值给a
print(a)
# 4