函数的定义

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

函数的语法结构

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

语法

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

参数:

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

补充:

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

使用

# 假如要计算字符串的长度,在不使用`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

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

函数的返回值

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

1.当函数体代码没有return关键字的时候,返回值是None

def index_1():
    s = 'Hello,World!'

    
a = index_1()
print(a)
# None

2.当函数体return后面没有跟任何值得时候,返回值也是None

def index_2():
    s  = 'Hello,World!'
    return
    
    
a = index_2()
print(a)
# None

3.当函数体代码写了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!')

5.函数体代码遇到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
Last modification:March 16, 2022
如果觉得我的文章对你有用,请随意赞赏