【黑马程序员】python函数

文章目录

  • 函数
    • 什么是函数
    • 为什么学习函数
    • 函数定义
    • 函数的传入参数
    • 函数的返回值
      • 返回值基础
      • 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()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【每日八股】Java基础经典面试题2

前言:哈喽大家好,我是黑洞晓威,25届毕业生,正在为即将到来的秋招做准备。本篇将记录学习过程中经常出现的知识点以及自己学习薄弱的地方进行总结🥰。 本篇文章记录的Java基础面试题,适合在学Java基础的小白…

设计模式系列之-策略模式(优化过多代码if…else)

首先解释下什么策略模式 如下图: 简而言之:算法的使用与算法的实现分离开来 想象有一个开关按钮,每次按下去都可以切换不同的灯光模式(例如:强光、柔光、闪烁),这里的每种灯光模式就是一个策略…

程序人生——Java中基本类型使用建议

目录 引出Java中基本类型使用建议建议21:用偶判断,不用奇判断建议22:用整数类型处理货币建议23:不要让类型默默转换建议24:边界、边界、还是边界建议25:不要让四舍五入亏了一方 建议26:提防包装…

Unity类银河恶魔城学习记录8-5 p81 Blackhole duration源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码、 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Blackhole_Skill_Controller.cs using System.Collections; using Syste…

UL1642标准_锂聚合物电池亚马逊测试报告

UL1642标准_锂聚合物电池亚马逊测试报告 什么是锂聚合物电池UL1642标准? UL1642 认证要求涵盖旨在用于技术人员可更换或用户可更换应用的锂离子电池。UL1642 认证要求是为了避免锂离子电池在产品中工作时发生火灾或爆炸的风险。 锂聚合物电池 UL是Underwriters L…

Devin:首位人工智能软件工程师的介绍

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

2024春招看了上百份程序员简历,这个工具写的简历最好!(附模板)

你们在制作简历时,是不是基本只关注两件事:简历模板,还有基本信息的填写。 当你再次坐下来更新你的简历时,可能会发现自己不自觉地选择了那个“看起来最好看的模板”,填写基本信息,却没有深入思考如何使简历…

DataWhale公开课笔记2:Diffusion Model和Transformer Diffusion

Stable Diffusion和AIGC AIGC是什么 AIGC的全称叫做AI generated content,AlGC (Al-Generated Content,人工智能生产内容),是利用AI自动生产内容的生产方式。 在传统的内容创作领域中,专业生成内容(PGC)…

Python数值方法在工程和科学问题解决中的应用

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 随着计算机技术的不断发展,Python作…

UI设计中的图标的分类,功能性图标

图标的分类 既然知道了图标的作用和重要性,那么接下来,就要进一步了解在工作中我们要设计哪些图标。图标可以划分成三种大类:功能性图标、装饰性图标、启动图标。 功能性图标 功能图标是具有指代意义且具有功能标识的图形,它不仅是一种图形&a…

代码随想录算法训练营第day41|背包理论基础、416. 分割等和子集

目录 a.背包理论基础——01背包 1.二维数组的01背包表示 2.一维滚动数组表示 b. 416. 分割等和子集 - 力扣(LeetCode) a.背包理论基础——01背包 背包问题分类: 对于面试的话,其实掌握01背包,和完全背包&#xff…

Sharding sphere分库分表

需要物理自己实现分表分库,然后通过配置文件配置。 配置文件: 需要配置多个数据源,主从表的关系【默认主表修改,从表读取】,定义分库的策略【比如User id】和分表【表Id】的策略 分库和分表策略:分库策略…

浅谈LockBit勒索病毒

在数字时代,随着科技的飞速发展,网络安全问题愈发凸显。恶意软件和勒索软件等网络威胁正不断演变,其中一款备受关注的勒索软件就是LockBit。 LockBit是一种高度复杂且具有破坏性的勒索软件。与传统的勒索软件相比,LockBit在其攻击…

外包干了5天,技术明显退步。。。。。

先说一下自己的情况,本科生,19年通过校招进入南京某软件公司,干了接近2年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了2年的功能测试&…

国产AI视频技术迎来新成员Etna,4K 60帧 15秒超高清视频

国内AI视频技术领域传来好消息,一款名为Etna的AI视频生成工具引起了业界的广泛关注。这款由七火山公司开发的技术,号称能够实现15秒4K 60帧的超高清视频生成,让人眼前一亮! 🚀 国产技术的崛起 Etna的问世,…

【软考高项】【论文专题】- 5 - 论文写作思路梳理

目录 一、软考论文考什么? 二、我在项目中做什么? 三、项目做什么? 四、 项目小白常见雷区 五、如何写的不像是模版? 一、软考论文考什么? 《考试大纲》指出:根据试卷上给出的论文题目,选择…

【Linux】常用指令大全 [万字详解!建议收藏记忆!]

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

IDEA如何切换git账户

一、首先设置idea的密码不保存 二、找到你的windos的凭据管理器,直接在电脑里面搜索就行。 把已经有的git的凭据删掉,然后重启IDEA,拉取代码,就会弹框来让你输入账号。 注意:将系统弹出的账号密码框关掉,…

docker之自己制作jdk镜像

一,下载想要制作的镜像的对应jdk(自行下载),本文使用jdk17(因为自己的springboot项目时在jdk17下开发的,悲!!!,再加上没有在官网上找到对应镜像,只…

C# danbooru Stable Diffusion 提示词反推 Onnx Demo

目录 说明 效果 模型信息 项目 代码 下载 C# danbooru Stable Diffusion 提示词反推 Onnx Demo 说明 模型下载地址:https://huggingface.co/deepghs/ml-danbooru-onnx 效果 模型信息 Model Properties ------------------------- ----------------------…