函数的基本使用

函数的定义

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段,提高应用的模块性,和代码的重复利用率,Python提供了许多内建函数,比如print() len()。但也可以自己创建函数,这被叫做用户自定义函数。

函数的语法结构

函数必须先定义再调用,函数的定义就是先将函数体代码保存起来,然后通过内存地址赋值给函数名,函数名就是对这段代码的引用,与变量的定义很相似

语法

  1. def 函数名(参数1,参数2,...):
  2. """文档描述"""
  3. 函数体
  4. return

参数:

  • def: 定义函数的关键字
  • 函数名:函数名指向函数内存地址,是对函数体代码的引用,函数的命名应该反映出函数的功能
  • 括号:括号内定义参数,参数是可有可无的,且无需指定参数的类型
  • 冒号:括号后要加冒号,然后在下一行开始缩进编写函数体的代码
  • “””文档描述”””: 描述函数功能,参数介绍等信息的文档,非必要,但是建议加上,从而增强函数的可读性
  • 函数体:由语句和表达式组成
  • return 值:定义函数的返回值,return是可有可无的

补充:

  1. 查看函数内部源码,windowsctrl+点击,maccommand+点击
  2. 定义函数的过程不会执行函数体代码,只会检测语法

使用

  1. # 假如要计算字符串的长度,在不使用`len()`函数的情况下
  2. s = 'abcdefgh'
  3. # 不使用函数的代码
  4. count = 0
  5. for i in s:
  6. count += 1
  7. print('字符串的长度是:%s' % count)
  8. # 8
  9. # 使用函数的代码
  10. def str_len(len_str):
  11. n = 0
  12. for a in len_str:
  13. n += 1
  14. print('字符串的长度是:%s' % n)
  15. return
  16. str_len(s) # 直接调用,通过输入的字符串直接计算,非常方便
  17. # 8
  18. str_len('asdasdasd')
  19. # 9

函数的分类

内置函数

python解释器提前定义好可以直接调用的函数,比如print() len()

自定义函数

自己编写的函数,为无参函数、有参函数、空函数

无参函数

在构造函数中,括号内没有参数

  1. def index():
  2. print('Hello,World!')
  3. index() # 调用也不需要写参数

有参函数

在构造函数中,括号内有参数(类似于变量名)

  1. def index(s):
  2. print('Hello,World!', s)
  3. index('Hello,World!')

空函数

在构造函数中,函数体的代码先用pass占位

  1. def index():
  2. pass

补充:在项目前期中,更快的搭建出功能框架

函数的返回值

函数的返回值其实就是在调用函数之后返回的值

  1. 当函数体代码没有return关键字的时候,返回值是None
  1. def index_1():
  2. s = 'Hello,World!'
  3. a = index_1()
  4. print(a)
  5. # None
  1. 当函数体return后面没有跟任何值得时候,返回值也是None
  1. def index_2():
  2. s = 'Hello,World!'
  3. return
  4. a = index_2()
  5. print(a)
  6. # None
  1. 当函数体代码写了return并且跟了数据 那么写什么就返回什么
  1. def index_2():
  2. s = 'Hello,World!'
  3. return s
  4. a = index_2()
  5. print(a)
  6. # Hello,World!

4.return后面还可以跟多个值用逗号隔开,会自动组织成元组返回出去后

  1. def index_3():
  2. s = 'Hello, World!'
  3. return s, s, s
  4. a = index_3()
  5. print(a)
  6. # ('Hello, World!', 'Hello, World!', 'Hello, World!')
  1. 函数体代码遇到return会立刻结束函数运行,相当于循环体代码里面写break,遇到就立刻结束函数和循环的执行

函数的调用

函数的调用一定是先定义好再调用,并且函数体的代码只有调用才能执行,不调用只能用来检测语法

使用

  1. 函数名(参数1, 参数2, 参数3...) # 参数可有可无,如果有则传递参数
  2. # 函数名指向的是内存中函数体代码所在的位置

形式

语句形式

  1. def test_1():
  2. print(1+2)
  3. test_1(3)

表达形式

  1. def test_2(x, y):
  2. return x + y
  3. a = test_2(1, 2) # 将调用函数的返回值赋值给a
  4. print(a)
  5. # 3
  6. b = 10 * test_2(2, 2) # 将调用函数的返回值乘以10的结果赋值给b
  7. print(b)
  8. # 40

函数调用作为参数的形式

  1. def test_3(x, y):
  2. return x + y
  3. a = test_3(1, test_3(1, 2)) # 将函数`test_3(1, 2)`当作第二个参数,外面在嵌套一个`test_3`最终结果赋值给a
  4. print(a)
  5. # 4