Python函数 之 函数基础

news2024/11/20 20:22:11
  • print() 在控制台输出
  • input() 获取控制台输⼊的内容
  • type() 获取变量的数据类型
  • len() 获取容器的⻓度 (元素的个数)
  • range() ⽣成⼀个序列[0, n)

以上都是我们学过的函数,函数可以实现⼀个特定的功能。我们将学习⾃⼰如何定义函数, 实现特定的功能。


1.函数是什么?

  • 函数将多⾏代码(可以实现⼀个特定的功能)放在⼀块,并给它起⼀个名字在需要使             多⾏代码的时候, 可以使⽤名字代替
  • 定义函数的好处对具备相同逻辑的代码进行封装,实现对代码的重用,减少代码冗                                   余(重复的代码不需要多次书写),提⾼编程效率。
  • 函数必须 先定义 后 调用

2.函数的文档注释[了解] 

  1. 函数的⽂档注释,本质就是注释, 只不过作⽤和书写位置有特定的要求
  2. 作⽤: 是对函数的作用和使用方法进行说明, ⽐如 有哪些参数, 返回值是什么
  3. 书写位置: 在def 的下方,使⽤三对引号来书写

函数的查看:

  1. 在函数名上,使⽤快捷键 Ctrl q 查看
  2. 在函数名上,使⽤ 快捷键 Ctrl B 跳转到函数定义的地⽅查看
  3. 在函数名上, 按住 Ctrl 键,点击函数名,跳转到函数定义的地⽅查看

3.函数的定义 

def 函数名():
    函数中的代码
    函数中的代码
  1. 函数定义,就是给多行代码起名字的过程
  2. 函数的定义需要使⽤ 关键字 def, 单词 define
  3.  处在 def 缩进中的代码 都属于这个函数
  4. 函数名要满⾜标识符的规则, ⻅名知意
  5.  def 这⾏代码的最后需要⼀个 冒号
  6. 函数定义不会执⾏函数中的代码,想要执⾏需要调⽤这个函数

4.定义带参数的函数

  • 参数
    • 形式参数(形参):在函数定义的时候,在括号中写⼊变量,这个变量就称为是函数的参数。
    • 实际参数(实参):在函数调⽤的时候,可以给定义时候的形参传递具体的数据值,供其使⽤。
    • 注: 在函数调⽤的时候,会将函数的实参值传递给形参。
  • 好处: 可以让函数更加的通⽤,函数中的数据值不是固定的,是调⽤的时候,你传递的。
  • 使用场景: 判断 函数中 数据值是不是固定不变的, 如果是变化的就可以使⽤参数传递。
  • 注意点: ⽬前书写的函数, 如果存在形参,必须传递相同个数的实参
def sun_2_num(a, b): # a, b 形参
 c = a + b
 print(c)

sun_2_num(10, 20) # 10, 20 实参 10 给 a, 20 给 b
sun_2_num(1, 2)
sun_2_num(20, 39)

5.函数的调用

语法:函数名()

注意:有参数则需要传递参数

  1.  函数调用,就是使用 多行代码的过程
  2. 只定义函数, 不调用函数, 函数永远不会被执行
  3. 不能将 函数调用 放在 函数定义 的上方,否则将会出现错误。(先定义再调用)

# 定义带参数的函数
def sun_2_num(a, b): # a, b 形参
 c = a + b
 print(c)

# 调用带参数的函数
sun_2_num(10, 20) # 10, 20 实参 10 给 a, 20 给 b
sun_2_num(1, 2)
sun_2_num(20, 39)
定义函数的小技巧:
  • 先不使⽤函数,将多⾏代码写完
  • 在多行代码的上⽅使⽤ def 起名字
  • 使⽤ tab 键, 将多⾏代码进行缩进

6.函数嵌套调用

  • 在⼀个函数中调⽤另⼀个函数。

        1, 代码从上到下执⾏的

        2, 函数定义不会执⾏函数中的代码

        3, 函数调用会进⼊函数中执⾏函数中的代码

        4, 函数中的代码执行结束,会回到调⽤的地⽅继续向下执⾏

# 1. 定义名为test01的函数,打印当前函数的名称
def test01():
    print(1)
    print('func01')
    print(2)


# 2. 定义名为test02的函数,打印当前函数的名称,并 调用test01函数
def test02():
    print(3)
    print('func2')
    test01()
    print(4)


print(5)
test02()
print(6)
# 5 3 1 2 4 6

 


7.返回值

  • 返回值: 函数执⾏的结果
    • print() ---> None
    • input() ---> 键盘输⼊的内容, 类型 字符串
    • type() ---> 变量的数据类型
    • len() ---> 容器⻓度
  • 在⼀个函数中,想要返回⼀个数据(想要有返回值),需要使用return 关键字
  • 为什么返回值? 在函数中可能通过各种代码得到的数据结果,想要在函数外部使用就需要使⽤返回值。
  • 如果函数有返回值, ⼀般在调⽤的时候 会使⽤变量来接收(保存) 返回值, 以便后续使用。
  • return 关键字的作用:
    • 将⼀个数据值返回到调用的地⽅
    •  函数遇到 return 会结束函数的执行
    • return 关键字只能⽤在函数中
  • 如果⼀个函数 没有写 return,可以认为 返回值是 None
# 设计⼀个函数⽤于获取两个数中的较⼤数,数据来⾃于函数的参数


def get_max(a, b):
    if a > b:
        return a
    else:
        return b
    print('我会执⾏吗, 不会执⾏')  # 注意:return 表示返回,后续的代码都不会被执行


# 调用
num = get_max(10, 20)
print(num)

 

案例: 

需求:

1. 定义名为 input_username 的函数, 获取⽤户输⼊的⽤户名

2. 定义名为 input_password 的函数, 获取⽤户输⼊的密码

3. 定义名为 login 的函数, 判断获取的⽤户名和密码信息

4. 要求当获取的⽤户名为:admin 并且密码为: 123456 时, 输出“登录成功!”,否则提示“⽤户       名或 密码错误!”

# 1. 定义名为 input_username 的函数, 获取⽤户输⼊的⽤户名


def input_username():
    """输⼊⽤户名"""
    return input('请输入用户名:')


# 2. 定义名为 input_password 的函数, 获取⽤户输⼊的密码
def input_password():
    """输⼊密码"""
    return input('请输入密码:')


# 3. 定义名为 login 的函数, 判断获取的用户名和密码信息
# 4. 要求当获取的用户名为:admin 并且密码为: 123456 时,输出“登录成功!”,否则提示“用户名或密码错误!”

def login():
    """登录函数"""
    if input_username() == 'admin' and input_password() == '123456':
        print('登录成功')
    else:
        print('用户名或密码错误')


login()

 


未完待续。。。 

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

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

相关文章

C++进阶:继承和多态

文章目录 ❤️继承🩷继承与友元🧡继承和静态成员💛菱形继承及菱形虚拟继承💚继承和组合 ❤️多态🩷什么是多态?🧡多态的定义以及实现💛虚函数💚虚函数的重写&#x1f499…

如何借助社交媒体影响者的力量,让品牌影响力倍增?

一、引言:为何社交媒体影响者如此关键? 在信息爆炸的今天,社交媒体已成为塑造消费者行为与品牌认知的重要渠道。社交媒体影响者,凭借其在特定领域的专业知识、庞大的粉丝基础及高度的互动性,成为了品牌传播不可忽视的…

JVM原理(二四):JVM虚拟机锁优化

高效并发是从JDK 5升级到JDK 6后一项重要的改进项,HotSpot虛 拟机开发团队在这个版本上花费了大量的资源去实现各种锁优化技术,如适应性自旋( Adaptive Spinning)、锁消除( Lock Elimination)、锁膨胀(Lock Coarsening)、轻量级锁(Lightweight Locking)、…

DeepMind的JEST技术:AI训练速度提升13倍,能效增强10倍,引领绿色AI革命

谷歌旗下的人工智能研究实验室DeepMind发布了一项关于人工智能模型训练的新研究成果,声称其新提出的“联合示例选择”(Joint Example Selection,简称JEST)技术能够极大地提高训练速度和能源效率,相比其他方法&#xff…

数字信号处理教程(3)——z变换

在连续时间域中的每一种分析方法,在离散时间域中想必也能得到对应一种分析方法。连续傅里叶变换对应着离散傅里叶变换(DFT),而在拉普拉斯变换则是对应着z变换。z变换能够将信号表示成离散复指数函数的线性组合。连续傅里叶变换可以…

NAT技术及其应用

网络地址转换(NAT,Network Address Translation)是一种广泛应用于现代网络中的技术,旨在解决IP地址短缺问题,同时增强网络的安全性和灵活性。本文将详细解释NAT技术的工作原理,并探讨其在家庭及企业网络中的…

华为HCIP Datacom H12-821 卷30

1.单选题 以下关于OSPF协议报文说法错误的是? A、OSPF报文采用UDP报文封装并且端口号是89 B、OSPF所有报文的头部格式相同 C、OSPF协议使用五种报文完成路由信息的传递 D、OSPF所有报文头部都携带了Router-ID字段 正确答案:A 解析: OSPF用IP报…

【大模型LLM面试合集】大语言模型架构_layer_normalization

2.layer_normalization 1.Normalization 1.1 Batch Norm 为什么要进行BN呢? 在深度神经网络训练的过程中,通常以输入网络的每一个mini-batch进行训练,这样每个batch具有不同的分布,使模型训练起来特别困难。Internal Covariat…

最佳 iPhone 解锁软件工具,可免费下载用于电脑操作的

业内专业人士表示,如果您拥有 iPhone,您一定知道忘记锁屏密码会多么令人沮丧。由于 Apple 的安全功能强大,几乎不可能在没有密码或 Apple ID 的情况下访问锁定的 iPhone。 “当我忘记密码时,如何在没有密码的情况下解锁iPhone&am…

来一组爱胜品1133DN PRO打印机的照片

刚拆箱的机器正面照片 打开前盖正准备要安装原装耗材 下图是原装耗材,硒鼓型号是DR2833、碳粉盒型号是TN2833,鼓组件打印页数12000页,TN2833标准容量粉盒打印页数1600页/5%覆盖率,TN2833H大容量粉盒打印页数3000页/5%覆盖率、TN2833L超大容量…

【LLM】三、open-webui+ollama搭建自己的聊天机器人

系列文章目录 往期文章回顾: 【LLM】二、python调用本地的ollama部署的大模型 【LLM】一、利用ollama本地部署大模型 目录 前言 一、open-webui是什么 二、安装 1.docker安装 2.源码安装 三、使用 四、问题汇总 总结 前言 前面的文章,我们已经…

Studying-代码随想录训练营day34| 62.不同路径、63.不同路径II、343.整数拆分、96.不同的二叉搜索树

第34天,动态规划part02,牢记五部曲步骤,编程语言:C 目录 62.不同路径 63.不同路径II 343.整数拆分 96.不同的二叉搜索树 总结 62.不同路径 文档讲解:代码随想录不同路径 视频讲解:手撕不同路径 题目…

红酒知识百科:从入门到精通

红酒,这个深邃而迷人的世界,充满了无尽的知识与奥秘。从葡萄的选择、酿造工艺,到品鉴技巧,每一步都蕴藏着深厚的文化底蕴和精细的技艺。今天,就让我们一起踏上这场红酒知识之旅,从入门开始,逐步…

2024年7月1日,公布的OpenSSH的漏洞【CVE-2024-6387】

目录 ■概要 ■概要(日语) ■相关知识 openssh 和 ssh 有区别吗 如何查看 openssh的版本 漏洞描述 glibc Linux是什么 如何查看系统是不是基于 Gibc RHEL Linux 是基于Glibc的Linux吗 还有哪些 Linux版本是基于 GNU C库(glibc&…

Github Actions 构建Vue3 + Vite项目

本篇文章以自己创建的项目为例,用Github Actions构建。 Github地址:https://github.com/ling08140814/myCarousel 访问地址:https://ling08140814.github.io/myCarousel/ 具体步骤: 1、创建一个Vue3的项目,并完成代…

谷粒商城 - 编写一个自定义校验注解

目录 开始 未来实现效果 第一步:编写自定义校验注解 第二步:编写自定义校验器 第三步:编写配置文件 效果演示 开始 未来实现效果 编写一个 ListValue 注解,可以实现功能有: 限定字段的值,例如指定只…

注解复习(java)

文章目录 注解内置注解**Deprecated**OverrideSuppressWarnings【不建议使用】Funcationallnterface 自定义注解元注解RetentionTargetDocumentedInherited 和 Repeatable 反射注解 前言:笔记基于动力节点 注解 注解可以标注在 类上,属性上&#xff0c…

LabVIEW中使用 DAQmx Connect Terminals作用意义

该图展示了如何在LabVIEW中使用 DAQmx Connect Terminals.vi 将一个信号从一个源端口连接到一个目标端口。这种处理有以下几个主要目的和作用: 同步操作: 在多任务、多通道或多设备系统中,可能需要不同的组件在同一时刻执行某些操作。通过将触…

深入理解循环神经网络(RNN)

深入理解循环神经网络(RNN) 循环神经网络(Recurrent Neural Network, RNN)是一类专门处理序列数据的神经网络,广泛应用于自然语言处理、时间序列预测、语音识别等领域。本文将详细解释RNN的基本结构、工作原理以及其优…

【鸿蒙学习笔记】创建自定义组件

官方文档:创建自定义组件 目录标题 [Q&A] 如何自定义组件?1・struct 自定义组件名 {...}2・build()函数:3・@Component4・Entry5・Reusable 自定义组件的参数 buil…