《Python基础》之函数的用法

一、简介

在 Python 中,函数是一段可重用的代码块,用于执行特定的任务。函数可以帮助你将代码模块化,提高代码的可读性和可维护性。

函数的用途

  • 代码重用:通过函数,你可以将常用的代码块封装起来,避免重复编写相同的代码。

  • 模块化:函数可以将复杂的任务分解为更小的、可管理的模块。

  • 提高可读性:通过函数,你可以为代码块命名,使代码更易于理解和维护。

二、函数的用法以及性质

1、定义函数

python 复制代码
# 使用python中的关键字 def
def 函数名(参数1,参数2...):
    函数体
  • 定义函数要用到python中的关键字 def ,其中函数的参数可以是一个,可以是多个,也可以没有。

2、函数的特点

  • 函数不调用不执行
  • 定义函数必须在调用之前出现

3、函数的参数

(1)、参数的种类
  • 形式参数:指的是函数定义时,小括号中定义的参数
  • 实际参数:指的是将来调用函数时,实际传入进去的具体的值
(2)、参数的传值方式
  • 位置传参
python 复制代码
def show1(a, b, c):
    print(f"a:{a},b:{b},c:{c}")   # a:11,b:22,c:33
show1(11, 22, 33)

在调用函数时填的实参会按默认顺序给形参赋值

  • 关键字传参(通过形参的名字传参)
python 复制代码
def show1(a, b, c):
    print(f"a:{a},b:{b},c:{c}")
show1(b=100, c=200, a=300)

调用函数时可以给形参赋值,这样即使顺序不对也可以完成赋值

  • 混合传参
python 复制代码
def show1(a, b, c):
    print(f"a:{a},b:{b},c:{c}")
show1(100, c=200, b=300)

前两种方式的混合使用(一般很少用到)

注意: 混合传参的时候,前面没有关键字的实参是会按照形参的位置来的,后面关键字传参可 以顺序不一样。

  • 默认值传参
python 复制代码
def show1(a, b=100):
    

在定义函数时可以给一些参数赋值,在调用参数时如果不对该参数进行赋值就会默认按照定义函数时赋的值进行运算。

  • 动态传参

<1>、传入一个 * 的参数

python 复制代码
def sum1(*num):
# 这里的num 是一个元组,接收若干个将来调用时传入的实参
    n = 0
    for i in num:
        n = n + i
    print(f"总和为:{n}")
sum1(10, 20) # (10, 20)
sum1(10, 20, 30) # (10, 20, 30)
sum1(10, 20, 30, 40) # (10, 20, 30, 40)

传参的内容,多个参数的类型可以是不一样的

<2>、传入两个 ** 的参数

python 复制代码
def sum1(**num):
    print(num, type(num))
sum1(name='小明', age=18)

* : 表示传入的每一个单独的元素都被封装成一个元组
** : 表示传入的是一个一个的键值对,所有的键值对会被封装成一个字典
我们今后开发的时候,定义动态参数时,起名字是固定的,若一个*的动态参数,名字起为
*args, 若**的动态参数,名字起为**kwargs

4、函数的返回值(return)

注意:
1、一个函数中如果没有写 return, 默认情况下,这个函数最后一句话会有一个 return None;
2、一个函数中,如果遇到了return ,那么这个函数就结束了,函数中的后续代码不执行;
3、一个函数中只能有一个 return;
4、 函数返回值 return 后面,要返回的类型可以是任意的类型;
5、直接返回多个值,多个值之间使用英文逗号分隔,实际返回的内容是一个元组,可以用 多个变量分别接收;

5、函数的分类

函数根据参数和返回值可以分为:无参无返回值、无参有返回值、有参无返回值、有参有返回值

6、函数的嵌套

(1)、嵌套调用
python 复制代码
def fun1():
    print("hello world")

def fun2():
    return 100

def fun3(a1, b1):
    fun1() # 调用fun1函数
    res1 = fun2() # 调用fun2函数
    return a1 + b1 + res1

res2 = fun3(11,22)
print(res2)  
(2)、嵌套定义
python 复制代码
def fun1():
    a = 10
    def fun2():
        print("hello world")
    print(a)
    fun2()

fun1()

7、函数的作用域和变量

在 python 中,作用域分为两个区域

  • 函数外是一个作用域

  • 函数内部是一个作用域

在 python 中,变量分为两种

  • 全局变量:将变量定义在函数外

  • 局部变量:将变量定义在函数内部

注意:
1、局部作用域中可以使用到全局变量【可以使用函数外部定义的变量】;
2、函数与函数内部的作用域是相互独立的,不能互相调用函数内部创建的局部变量;
3、python中提供了一个关键字 global, 在函数内部定义一个全局变量,出了函数也是可以被访问到的。 如果函数内部有变量被global修饰,需要先调用该函数,让内存中出现这个变量,后续才能去使用。

8、补充知识

1、函数名也可以当作一个变量使用
2、函数名作为变量 可以存储在容器中,比如列表
3、可以将函数作为返回值使用

总结


函数是 Python 编程中的重要组成部分,通过函数,你可以将代码模块化、提高代码的可读性和可维护性。函数可以接受参数、返回值,并且具有局部作用域。掌握函数的定义、用途、特点和用法,将帮助你编写更高效、更清晰的 Python 代码。

相关推荐
q0_0p1 小时前
从零开始的Python世界生活——基础篇(Python字典)
python·python基础
AI人H哥会Java1 小时前
【JAVA】Java基础—面向对象编程:常用API与数据结构—集合框架(List、Set、Map等)
java·开发语言
databook1 小时前
manim边做边学--圆柱体
python·动效
shepherd枸杞泡茶1 小时前
C# 数据结构之【队列】C#队列
开发语言·数据结构·c#
deephub1 小时前
Scikit-learn Pipeline完全指南:高效构建机器学习工作流
人工智能·python·机器学习·scikit-learn
麻衣带我去上学2 小时前
Pytest使用Jpype调用jar包报错:Windows fatal exception: access violation
windows·python·pytest·jar
scoone2 小时前
C++中的原子操作:原子性、内存顺序、性能优化与原子变量赋值
开发语言·c++
轩情吖2 小时前
模拟实现Bash
linux·c语言·开发语言·c++·后端·bash·环境变量
旧故新长2 小时前
版本控制和idea简体中文教程
java·开发语言·intellij-idea
疯一样的码农2 小时前
使用 Maven 构建一个简单的 Java 项目
java·开发语言·maven