【黑马程序员】python函数

news2024/11/27 8:31:16

文章目录

  • 函数
    • 什么是函数
    • 为什么学习函数
    • 函数定义
    • 函数的传入参数
    • 函数的返回值
      • 返回值基础
      • None返回值
    • 函数说明文档
    • 函数的嵌套调用
      • 定义
      • 代码示例
    • 全局变量和局部变量
      • 全局变量
      • global变量
      • 局部变量
    • 函数综合案例

函数

什么是函数

  • 组织好的,可重复使用的、用来实现特定功能的代码段

为什么学习函数

  • 为了得到一个针对特定需求,可供重复利用的代码段

  • 提高程序利用性,减少重复代码,提高开发效率

函数定义

  • 函数定义语法
def 函数名(传入参数):
    函数体
    return 返回值
  • 函数调用语法
函数名(参数列表)
  • 注意事项

    • 参数不需要可以省略

    • 返回值不需要可以省略

    • 函数必须先定义后使用

函数的传入参数

  • 功能描述:在函数进行计算时,接收外部提供的数据

  • 代码示例

def add(a, b):
    return a + b

print(add(1, 1))
  • 注意

    • 多个参数之前使用逗号隔开

    • 调用传入参数时,按照顺序传入,使用逗号分隔

    • 在定义函数时的参数称为形参,在调用时传入的参数称为实参

函数的返回值

返回值基础

  • 定义:函数在执行完成后返回给调用方的结果

  • 使用关键字return来返回结果

  • 函数体遇到return之后就结束,return之后的逻辑不会在执行

None返回值

  • 如果函数没有使用return语句返回数据,此时python中默认返回了None值

  • None是python中一个特殊的字面量,其类型是:

  • 代码示例

def sayHi():
    print('hi')

result = sayHi()
print(result)
print(type(result))
  • 应用场景

    • 用在函数无返回值的场景

    • 用在if判断上

      • None等同于False

      • 一般在函数中主动返回None,配合if判断做相关处理

      def checkAge(age):
          if age > 18:
              return "ok"
          else:
              return None
      
      ret = checkAge(16)
      if not ret:
          print("未满18")
      
    • 用于声明无内容的变量上

    • 定义变量,但暂时不需要变量有具体的值,可以用None来代替

    name=None
    

函数说明文档

  • 通过多行注释的方式,对函数进行解释说明,内容应写在函数体之前

  • 语法

def func(x, y):
    """
    函数说明
    :param x: 形参x的说明
    :param y: 形参y的说明
    :return: 返回值说明
    """
    函数体
    return 返回值

函数的嵌套调用

定义

  • 嵌套调用:一个函数里面又调用了另一个函数

代码示例

def func_b():
    print('-------2-------')

def func_a():
    print('-------1-------')
    func_b()
    print('-------3-------')

func_a()
  • 调用流程

    • 先执行调用func_a

    • 在func_a中在调用func_b

    • 执行完func_b的所有逻辑在返回func_a中调用func_b的位置

    • 继续执行完剩余的func_a函数逻辑

全局变量和局部变量

  • 作用域:变量的作用范围,在哪里可见,在哪里不可见

全局变量

  • 在函数体内,体外都能生效的变量

  • 代码示例

def func_b():
    num = 20
    print(f"函数体内访问:num = {num}")

func_b()
print(f"函数体外访问:num = {num}")
  • 运行结果

ges%2F2024-03-12-15-38-41-image.png&pos_id=img-zMigKjuA-1710245738340)

global变量

  • 引入:可以看到上面的全局变量中,将num改为20,在函数内生效了,但是出了函数后,num的值又变成了10

  • global关键字,可以在函数体内部声明局部变量为全局变量

  • 代码示例

num1 = 10


def func_c():
    global num1
    num1 = 20
    print(f"函数体内访问:num1 = {num1}")


func_c()
print(f"函数体外访问:num1 = {num1}")
  • 运行结果

在这里插入图片描述

局部变量

  • 定义在函数体内部的变量,只在函数体内生效

  • 作用:在函数体内部,临时保存数据,当函数调用完后,则销毁局部变量

  • 代码示例

def func_a():
    a = 10
    print(f"函数体内:a={a}")

func_a()
# NameError: name 'a' is not defined
# print("函数体外:{}", a)

函数综合案例

  • 需求描述

在这里插入图片描述

  • 代码示例
# *_*coding:utf-8 *_*

money = 1000
name = None

name = input("请输入姓名:")

def show_menu():
    print("-------主菜单--------")
    print(f"{name}您好,欢迎登录ATM机")
    print("查询余额 [输入1]")
    print("存款 [输入2]")
    print("取款 [输入3]")
    print("退出 [输入4]")

def get_balance():
    print("------查询余额--------")
    print(f"{name}您的余额还有{money}元")

def save_money(num):
    global money
    money += num
    print("------存款--------")
    print(f"存款{num}元成功")
    print(f"{name}您的余额还有{money}元")

def load_monry(num):
    global money
    money -= num
    print("------取款--------")
    print(f"取款{num}元成功")
    print(f"{name}您的余额还有{money}元")

def main():
    while (True):
        show_menu()
        choice = int(input("请输入你的操作选项:"))
        if choice == 1:
            get_balance()
        elif choice == 2:
            num = int(input("请输入你要存的钱:"))
            save_money(num)
        elif choice == 3:
            num = int(input("请输入你要取的钱:"))
            load_monry(num)
        elif choice == 4:
            print("即将退出...")
            return

main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1511350.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5.Java并发编程—JUC线程池架构

JUC线程池架构 在Java开发中,线程的创建和销毁对系统性能有一定的开销,需要JVM和操作系统的配合完成大量的工作。 JVM对线程的创建和销毁: 线程的创建需要JVM分配内存、初始化线程栈和线程上下文等资源,这些操作会带来一定的时间和…

【C语言步行梯】自定义函数、函数递归详谈

🎯每日努力一点点,技术进步看得见 🏠专栏介绍:【C语言步行梯】专栏用于介绍C语言相关内容,每篇文章将通过图片代码片段网络相关题目的方式编写,欢迎订阅~~ 文章目录 什么是函数库函数自定义函数函数执行示例…

数据结构 第2章:线性表

文章目录 2.1 线性表的定义和操作2.1.1 线性表的基本概念2.1.2 线性表的基本操作 2.2. 顺序表2.2.1. 顺序表的基本概念2.2.2. 顺序表的实现2.2.3. 顺序表的基本操作 2.3 链表2.3.1 单链表的基本概念2.3.2 单链表的实现2.3.3 单链表的插入2.3.4. 单链表的删除2.3.5. 单链表的查找…

VB 数据质量诊断软件(分析数据的完整性,合理性,准确性)-139-(代码+程序说明)

转载地址http://www.3q2008.com/soft/search.asp?keyword139 前言: 为何口出狂言,作任何VB和ASP的系统, 这个就是很好的一个证明 :) 又有些狂了... 数据库操作谁都会,接触的多了也没什么难的,VB编程难在哪?算法上,这个是一个算法题的毕业设计 哈哈忙活了足足有一○小时, …

2024年最新阿里云和腾讯云云服务器价格租用对比

2024年阿里云服务器和腾讯云服务器价格战已经打响,阿里云服务器优惠61元一年起,腾讯云服务器61元一年,2核2G3M、2核4G、4核8G、4核16G、8核16G、16核32G、16核64G等配置价格对比,阿腾云atengyun.com整理阿里云和腾讯云服务器详细配…

C语言 ——关键字

关键字:在C语言中被赋予了特定含义的英文单词,一共有32个关键字 * 关键字全部小写 * 在特定的编译器中,关键字是高亮显示的 vs:蓝色或者紫色 vs:蓝色 下图圈起来的都是关键字 c auto break case char const con…

Kafka消费者重平衡

「(重平衡)Rebalance本质上是一种协议,规定了一个Consumer Group下的所有Consumer如何达成一致,来分配订阅Topic的每个分区」。 比如某个Group下有20个Consumer实例,它订阅了一个具有100个分区的Topic。 正常情况下&…

【C语言】如何规避野指针

✨✨ 欢迎大家来到莉莉的博文✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 目录 一、概念: 二、野指针成因: 2.1. 指针未初始化 2.2 指针越界访问 3. 指针指向的空间释放 三、如何规避野指针 3.…

MT6771 android13 自定义背光曲线

一. Android系统源码中的参数配置 MTK6771平台MTK重写了背光曲线的参数,路径在s0_vnd/vendor/mediatek/proprietary/packages/overlay/vendor/FrameworkResOverlayExt/brightness_adaptive_support/res/values/config.xml 不过MTK的其他平台可能不是在这个路径 来看…

C/C++语言学习基础版(一)

目录 一and二、C语言说明 注释: 1、声明语句 2、输出函数 3、return 语句 三、C语言的数据结构 1、常量与变量 2、基本数据结构 3、关键字 练习:进制转换 四、基本输入输出 1、字符输出函数putchar 2、字符输入函数getchar 3、格式化输出函…

JavaParser的快速介绍

开发的工作主要是写代码, 有考虑过使用代码写代码, 使用代码分析和改进代码吗? JavaParser 就可以帮你用来处理Java 代码的这些功能。 Java Parser 的介绍 Java Parser是一个用于解析和分析Java源代码的开源工具。它提供了一个API接口&…

VMware ESXi 6.7.0 开启SNMP服务

VMware ESXi 6.7.0 开启SNMP服务,操作步骤如下: 1、用root账户,登录VMware ESXi 6.7.0 2、开启SSH服务 Host->Actions->Services->Enable Secure Shell(SSH) 主机->操作->服务->启用安全Shell(SSH) 3、登录SSH&#xff…

抽象工厂模式——创建型模式

抽象工厂模式——创建型模式 抽象工厂模式是一种软件设计模式,它解决了在创建一组相关或相互依赖的对象时的一些核心问题。其核心问题包括: 对象的创建与使用分离: 抽象工厂模式通过引入抽象工厂接口以及具体工厂类,将对象的创建与…

如何在Linux使用docker安装Plik并实现无公网ip上传下载内网存储的文件资源

文章目录 1. Docker部署Plik2. 本地访问Plik3. Linux安装Cpolar4. 配置Plik公网地址5. 远程访问Plik6. 固定Plik公网地址7. 固定地址访问Plik 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂,风趣幽默&…

python学习1:csv模块、time模块、random、jieba、worldcloud、pycharm的虚拟环境认识、black格式化文件

标准库与第三方库 模块(modules):是包含python函数和变量的文件,名称符合Python标识符要求,并使用.py后缀 包(package):是包含其他模块、包的文件夹。名称符合Python标识符要求&am…

第三百九十八回

文章目录 1. 概念介绍2. 使用方法3. 示例代码 我们在上一章回中介绍了通道相关的内容,本章回中将介绍StreamProvider组件.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 在Flutter中Stream是经常使用的组件,对该组件的监听可void main()…

【C++】STL(五) Stack Queue容器

5、 stack容器 5.1 简介 ① stack是一种先进后出的容器,它只有一个出口。 ② 栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为。 ③ 栈中进入数据称为:入栈 push ④ 栈中弹出数据称为:出栈 pop 5.2 常用接口 …

ansible-playbook的角色(role)

1前言 角色目录如下(分别为httpd角色和nginx角色) handlers/ :至少应该包含一个名为 main.yml 的文件; 其它的文件需要在此文件中通过include 进行包含 vars/ :定义变量,至少应该包含一个名为 main.yml 的…

如何使用US Domain Center和WordPress搭建非营利组织网站的详细指南

在今天的数字化时代,拥有一个专业、易于管理和更新的网站对于非营利组织(例如慈善机构、NGO等)至关重要。WordPress是一个功能强大且易于使用的网站构建平台,而美国域名中心 US Domain Center:US Domain Center 则是一…

Ansys Zemax | 如何获取公差报告中的任何优化操作数值

附件下载 联系工作人员获取附件 此文为上一篇文章“如何执行非序列公差分析”’的文末提到的详细介绍。 本文介绍如何使用 OpticStudio 的公差脚本功能在公差报告中包含任何优化操作数值,以及如何编写简单的公差脚本。 简介 在对系统进行公差处理时,…