Python - 函数

简介: Python - 函数

函数简介


  • 函数是具有某种特定功能的代码块,可以重复使用
  • 在前面讲解数据类型的时候,其实已经出现了很多 Python 内置函数了

 

重复性代码


什么是重复性的代码

在处理功能相似的逻辑时,会出现结构雷同的代码

例如:有两个列表,编写程序分别打印这两个列表


a = [1, 2, 3]
b = [10, 20, 30]
# 打印输出列表 a 的相关信息
print('length of list is %d' % len(a)) 
i = 0
while i < len(a):
    print(a[i]) 
    i = i + 1 
# 打印输出列表 b 的相关信息
print('length of list is %d' % len(b)) 
i = 0
while i < len(b):
    print(b[i]) 
    i = i + 1


明显,两个循环输出的代码块是很类似的,这就叫做重复性代码

 

重复性代码维护性差

代码的重复性导致程序的可维护性差,当需要修改处理逻辑时,则需要在多处进行修改

 

函数的作用


  • 函数是可重复使用的,用来实现单一功能的代码段
  • 使用函数描述程序中功能相似的代码段,从而消除代码的重复性

 

函数的定义


def 函数名(参数列表):

   函数体

 

简单的栗子

# 简单的栗子
def max(a, b):
    if a > b:
        print(a)
    else:
        print(b)        
max(1, 2)
max(20, 10)
# 输出结果
2
20


  • 函数名:max
  • 参数列表:有两个 a、b
  • 函数功能:判断 a 是否大于 b

 

解决重复性的代码


开头的栗子是循环打印列表的元素,现在通过函数来优化下代码


# 打印输出列表 x 的相关信息
def print_list(x):
    print('length of list is %d' % len(x)) 
    i = 0
    while i < len(x):
        print(x[i]) 
        i = i + 1 
a = [1, 2, 3]
b = [10, 20, 30]
print_list(a)
print_list(b)
# 输出结果
length of list is 3
1
2
3
length of list is 3
10
20
30


当需要修改打印内容的时候,只需要修改函数代码块即可


# 打印输出列表 x 的相关信息
def print_list(x):
    print('length of list is %d' % len(x))
    i = 0
    while i < len(x):
        # 修改此行
        print('list[%d] = %d' % (i, x[i])) 
        i = i + 1
a = [1, 2, 3]
b = [10, 20, 30]
print_list(a)
print_list(b)
# 输出结果
length of list is 3
list[0] = 1
list[1] = 2
list[2] = 3
length of list is 3
list[0] = 10
list[1] = 20
list[2] = 30


函数的返回


Python 提供了 return 语句用于从函数中返回,当程序执行到 return 语句时,程序从函数中返回到调用函数的地方

 

实际栗子

# return
def test2():
    print('Before return')
    return
    # 这条语句不会被执行
    print('After return')
print('Before test')
test2()
print('After test')
# 输出结果
Before test
Before return
After test


如果用的是 pycharm,after return 这一行会提示 warning:This code is unreachable,这行代码是无法到达的


image.png


return 语句有两个常见用途

  • 提前退出函数
  • 返回具体的数据

 

提前退出函数

  • 通常情况下,函数执行到最后一条语句时退出函数的执行
  • 但某些情况下,可以通过 return 语句提前退出函数(像上面的栗子其实就是了)

 

提前退出函数的栗子


# return
def check(gender, age):
    if gender == 'female':
        return
    if age < 50:
        return
    print('We only process old man')
    print(gender)
    print(age)
print(check("male", 49))
print(check("female", 55))
check("male", 55)
# 输出结果
None
None
We only process old man
male
55


如果是提前退出函数,那么会返回 None

 

函数的返回值

return 语句可以携带参数,该参数作为函数的计算结果返回给调用方

return 返回值

 

return 一个返回值

求和函数

# return a
def test3(a, b):
    return a + b
print(test3(1, 2))
# 输出结果
3


return 多个返回值

# return a,b
def test4(a, b, c):
    if a > b:
        return a, c
    else:
        return b, c
print(test4(1, 2, 3))
print(test4(2, 1, 3))
# 输出结果
(1, 3)
(1, 3) 


return 多个返回值,得到的是一个元组

 

return 语句是必须的吗?

  • 不是,函数可以不写 return 语句
  • 但变量赋值这个函数的时候,会得到一个 None

 

函数 + pass 语句


有时候只想先声明一个函数,但并不想这么快写代码块,怎么办呢

 

错误写法

def test():

   # 啥代码没有

会爆红

 

正确写法

def test():
    pass
print("调用函数:", test(), "hahaha")
# 输出结果
调用函数: None hahaha


Python 提供了 pass 语句,代表函数没有功能代码块

 

函数参数

函数形参之必填参数、缺省参数、可变参数、关键字参数的详细使用

https://www.cnblogs.com/poloyy/p/12526592.html


相关文章
|
2月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
190 1
|
2月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
292 1
|
2月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
172 0
|
3月前
|
设计模式 缓存 监控
Python装饰器:优雅增强函数功能
Python装饰器:优雅增强函数功能
275 101
|
3月前
|
缓存 测试技术 Python
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
223 99
|
3月前
|
存储 缓存 测试技术
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
195 98
|
3月前
|
缓存 Python
Python中的装饰器:优雅地增强函数功能
Python中的装饰器:优雅地增强函数功能
|
4月前
|
Python
Python 函数定义
Python 函数定义
543 155
|
5月前
|
PHP Python
Python format()函数高级字符串格式化详解
在 Python 中,字符串格式化是一个重要的主题,format() 函数作为一种灵活且强大的字符串格式化方法,被广泛应用。format() 函数不仅能实现基本的插入变量,还支持更多高级的格式化功能,包括数字格式、对齐、填充、日期时间格式、嵌套字段等。 今天我们将深入解析 format() 函数的高级用法,帮助你在实际编程中更高效地处理字符串格式化。
567 0
|
3月前
|
算法 安全 数据安全/隐私保护
Python随机数函数全解析:5个核心工具的实战指南
Python的random模块不仅包含基础的随机数生成函数,还提供了如randint()、choice()、shuffle()和sample()等实用工具,适用于游戏开发、密码学、统计模拟等多个领域。本文深入解析这些函数的用法、底层原理及最佳实践,帮助开发者高效利用随机数,提升代码质量与安全性。
685 0

推荐镜像

更多