【Python系列】Python函数

news2024/11/20 8:23:20

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • 一.简单介绍
      • 1.什么是 python 函数?
      • 2.python 函数组成?
    • 二.基本函数
      • 1.print()
      • 2.len()
      • 3.input()
      • 4.range()
      • 5.type()
      • 6.str()
      • 7.int()
      • 8.float()
      • 9.max()
      • 10.min()
      • 11.pow()
      • 12.divmod()
    • 三.进阶函数
      • 1.文档说明
      • 2.函数嵌套
      • 3.变量作用域
      • 4.global
      • 5.多返回值
      • 6.函数参数
      • 7.关键字参数
      • 8.默认参数
      • 9.不定长参数
      • 10.关键字不定长
      • 11.函数作为参数
      • 12.lambda 匿名函数
      • 13.range 函数
      • 14.all()函数
      • 15.递归函数
    • 四.实战演练
      • 1.定义函数
      • 2.list 列表循环
      • 3.带参数
      • 4.返回值
      • 5.None
      • 6.综合练习

一.简单介绍

1.什么是 python 函数?

在 Python 中,函数是一组用于执行特定任务或操作的可重复、可调用的代码块。函数允许你将代码模块化,提高代码的可读性和可维护性。

2.python 函数组成?

在 Python 中,函数通常由以下几个组成部分:

  1. 函数定义: 定义函数的关键字是 def,后面跟着函数的名称和一对圆括号,括号里是函数的参数列表。

    def my_function(parameter1, parameter2):
        # 函数体
        # 可以包含一系列语句来执行特定的任务
    
  2. 参数: 函数可以接受零个或多个参数,这些参数是在调用函数时传递给函数的值。参数是可选的,函数可以没有参数。

    def greet(name):
        print("Hello, " + name + "!")
    
  3. 返回值: 函数可以返回一个值给调用者。使用 return 语句来指定函数的返回值。

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

    调用 add(2, 3) 将返回 5

  4. 函数调用: 要执行函数中的代码,需要调用函数。调用函数时,提供函数所需的参数。

    greet("Alice")
    

    这将输出 “Hello, Alice!”。

函数使得代码结构更加清晰,也提高了代码的可复用性。在 Python 中,有许多内置函数,同时你也可以自定义函数来执行你特定的任务。函数是 Python 编程中非常基础和重要的概念。

二.基本函数

1.print()

print(): 用于输出信息到控制台。

print("Hello, World!")

2.len()

len(): 用于获取序列(字符串、列表、元组等)的长度。

my_list = [1, 2, 3, 4, 5]
length = len(my_list)

3.input()

input(): 用于从用户获取输入。

user_input = input("Enter something: ")

4.range()

range(): 用于生成一个指定范围的数字序列。

numbers = list(range(5))

5.type()

type(): 用于获取对象的类型。

x = 10
data_type = type(x)

6.str()

str(): 将其他类型转换为字符串类型。

num = 42
str_num = str(num)

7.int()

int(): 将其他类型转换为整数类型。

num_str = "42"
num = int(num_str)

8.float()

float(): 将其他类型转换为浮点数类型。

num_str = "3.14"
num = float(num_str)

9.max()

max(): 返回可迭代对象中的最大值。

max_value = max([1, 2, 3, 4, 5])

10.min()

min(): 返回可迭代对象中的最小值。

min_value = min([1, 2, 3, 4, 5])

11.pow()

在 Python 中,可以使用幂运算符 ** 或内置函数 pow() 来计算一个数的立方。

使用幂运算符的示例:

x = 2
cube = x ** 3
print(cube)  # 输出: 8

使用内置函数 pow() 的示例:

x = 2
cube = pow(x, 3)
print(cube)  # 输出: 8

这两种方法都可以用来计算一个数的立方。你可以将 x 替换为任何你想要计算立方的数字。

12.divmod()

divmod()是 Python 内置函数之一,用于进行除法运算并同时返回商和余数。

divmod(x, y)

其中 x 和 y 是两个数字参数,函数将 x 除以 y,返回一个元组,元组中第一个元素是 x 除以 y 的商,第二个元素是余数。例如:

>>> divmod(10, 3)
(3, 1)

这里 10 除以 3,商为 3,余数为 1,所以返回元组(3, 1)。

三.进阶函数

1.文档说明

在函数名称下面“”“”“”然后直接 enter 键,可以补充参数和返回值.

# 定义函数,进行文档说明
def add(x, y):
    """
    add函数可以接收2个参数,进行2数相加的功能
    :param x: 形参x表示相加的其中一个数字
    :param y: 形参y表示相加的另一个数字
    :return: 返回值是2数相加的结果
    """
    result = x + y
    print(f"2数相加的结果是:{result}")
    return result

add(5, 6)

2.函数嵌套

# 定义函数func_b
def func_b():
    print("---2---")
# 定义函数func_a,并在内部调用func_b
def func_a():
    print("---1---")

    # 嵌套调用func_b
    func_b()

    print("---3---")
# 调用函数func_a
func_a()

3.变量作用域

num 的最终值还是 200,不会变为 500

num = 200

def test_a():
    print(f"test_a: {num}")

def test_b():
    num = 500
    print(f"test_b: {num}")

test_a()
test_b()
print(num)

4.global

num 的最终值是 500

# global关键字,在函数内声明变量为全局变量
num = 200

def test_a():
    print(f"test_a: {num}")

def test_b():
    global num  # 设置内部定义的变量为全局变量
    num = 500
    print(f"test_b: {num}")

test_a()
test_b()
print(num)

5.多返回值

# 演示使用多个变量,接收多个返回值
def test_return():
    return 1, "hello", True


x, y, z = test_return()
print(x)
print(y)
print(z)

6.函数参数

def user_info(name, age, gender):
    print(f"姓名是:{name}, 年龄是:{age}, 性别是:{gender}")
# 位置参数 - 默认使用形式
user_info('小明', 20, '男')

7.关键字参数

def user_info(name, age, gender):
    print(f"姓名是:{name}, 年龄是:{age}, 性别是:{gender}")
# 关键字参数
user_info(name='小王', age=11, gender='女')
user_info(age=10, gender='女', name='潇潇')  # 可以不按照参数的定义顺序传参

def add(x, y):
    return x + y

result = add(y=2, x=1)
print(result)  # 输出3

8.默认参数

请求参数默认:

def user_info(name, age, gender):
    print(f"姓名是:{name}, 年龄是:{age}, 性别是:{gender}")

# 缺省参数(默认值)
def user_info(name, age, gender):
    print(f"姓名是:{name}, 年龄是:{age}, 性别是:{gender}")

user_info('甜甜', gender='女', age=9)

方法上默认:

def add(x=0, y=0):
    return x + y

result = add()
print(result)  # 输出0

9.不定长参数

# 不定长 - 位置不定长, *号
# 不定长定义的形式参数会作为元组存在,接收不定长数量的参数传入
def user_info(*args):
    print(f"args参数的类型是:{type(args)},内容是:{args}")

user_info(1, 2, 3, '小明', '男孩')

10.关键字不定长

不定长关键字参数指的是函数可以接受任意数量的关键字参数,这些参数将被收集到一个字典中,并作为一个参数传递给函数。不定长关键字参数用两个星号 ** 来表示。

# 不定长 - 关键字不定长, **号
def user_info(**kwargs):
    print(f"args参数的类型是:{type(kwargs)},内容是:{kwargs}")

user_info(name='小王', age=11, gender='男孩')

#args参数的类型是:<class 'dict'>,内容是:{'name': '小王', 'age': 11, 'gender': '男孩'}

11.函数作为参数

# 定义一个函数,接收另一个函数作为传入参数
def test_func(compute):
    result = compute(1, 2)  # 确定compute是函数
    print(f"compute参数的类型是:{type(compute)}")
    print(f"计算结果:{result}")

# 定义一个函数,准备作为参数传入另一个函数
def compute(x, y):
    return x + y
# 调用,并传入函数
test_func(compute)

12.lambda 匿名函数

# 定义一个函数,接受其它函数输入
def test_func(compute):
    result = compute(1, 2)
    print(f"结果是:{result}")

# 通过lambda匿名函数的形式,将匿名函数作为参数传入
def add(x, y):
    return x + y

test_func(add)
test_func(lambda x, y: x + y)

Lambda函数:

# 使用Lambda函数
f = lambda x, y: x + y

print(f(2, 3))   # 输出 5

13.range 函数

for i in range(n):
range(start, stop, step)   #分别是起始、终止和步长
range3#即:从0到3,不包含3,即0,1,2
range(1,3)   #即:从1到3,不包含3,即1,2
range1,3,2#即:从1到3,每次增加2,因为1+2=3,所以输出只有1
#如果改成range(1,5,2),就会输出1和3
matrix = [0 for i in range(4)]  #[0, 0, 0, 0]
for j in range(i + 1, n + 1):  #从i+1到n+1,不包含n+1

14.all()函数

any()实现了或(OR)运算
all()实现了与(AND)运算

#对于any(iterables),如果可迭代对象iterables中任意存在每一个元素为True则返回True。
特例:若可迭代对象为空,比如空列表[],则返回False

15.递归函数

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n - 1)


result = factorial(4)
print(result)  # 输出24

四.实战演练

1.定义函数

# 定义一个函数,输出相关信息
def say_hi():
    print("Hi 我是黑马程序员,学Python来黑马")

# 调用函数,让定义的函数开始工作
say_hi()

2.list 列表循环

def list_while_func():
    """
    使用while循环遍历列表的演示函数
    :return: None
    """
    my_list = ["传智教育", "黑马程序员", "Python"]
    # 循环控制变量通过下标索引来控制,默认0
    # 每一次循环将下标索引变量+1
    # 循环条件:下标索引变量 < 列表的元素数量
    # 定义一个变量用来标记列表的下标
    index = 0  # 初始值为0
    while index < len(my_list):
        # 通过index变量取出对应下标的元素
        element = my_list[index]
        print(f"列表的元素:{element}")
        # 至关重要 将循环变量(index)每一次循环都+1
        index += 1


def list_for_func():
    """
    使用for循环遍历列表的演示函数
    :return: None
    """
    my_list = [1, 2, 3, 4, 5]
    # for  临时变量  in  数据容器:
    for element in my_list:
        print(f"列表的元素有:{element}")


# list_while_func()
list_for_func()

3.带参数

# 定义2数相加的函数,通过参数接收被计算的2个数字
def add(x, y, z):
    result = x + y + z
    print(f"{x} + {y} + {z}的计算结果是:{result}")

# 调用函数,传入被计算的2个数字
add(5, 6, 7)

4.返回值

# 定义一个函数,完成2数相加功能
def add(a, b):
    result = a + b
    # 通过返回值,将相加的结果返回给调用者
    return result
    # 返回结果后,还想输出一句话
    print("我完事了")


# 函数的返回值,可以通过变量去接收
r = add(5, 6)
print(r)

5.None

# 主动返回None的函数
def say_hi2():
    print("你好呀")
    return None

result = say_hi2()
print(f"无返回值函数,返回的内容是:{result}")
print(f"无返回值函数,返回的内容类型是:{type(result)}")
# None用于if判断
def check_age(age):
    if age > 18:
        return "SUCCESS"
    else:
        return None

result = check_age(16)
if not result:
    # 进入if表示result是None值 也就是False
    print("未成年,不可以进入")

# None用于声明无初始内容的变量
name = None

6.综合练习

"""
演示函数综合案例开发
"""
# 定义全局变量money name
money = 5000000
name = None
# 要求客户输入姓名
name = input("请输入您的姓名:")


# 定义查询函数
def query(show_header):
    if show_header:
        print("-------------查询余额------------")
    print(f"{name},您好,您的余额剩余:{money}元")


# 定义存款函数
def saving(num):
    global money  # money在函数内部定义为全局变量
    money += num
    print("-------------存款------------")
    print(f"{name},您好,您存款{num}元成功。")
    # 调用query函数查询余额
    query(False)


# 定义取款函数
def get_money(num):
    global money
    money -= num
    print("-------------取款------------")
    print(f"{name},您好,您取款{num}元成功。")
    # 调用query函数查询余额
    query(False)


# 定义主菜单函数
def main():
    print("-------------主菜单------------")
    print(f"{name},您好,欢迎来到黑马银行ATM。请选择操作:")
    print("查询余额\t[输入1]")
    print("存款\t\t[输入2]")
    print("取款\t\t[输入3]")  # 通过\t制表符对齐输出
    print("退出\t\t[输入4]")
    return input("请输入您的选择:")


# 设置无限循环,确保程序不退出
while True:
    keyboard_input = main()
    if keyboard_input == "1":
        query(True)
        continue  # 通过continue继续下一次循环,一进来就是回到了主菜单
    elif keyboard_input == "2":
        num = int(input("您想要存多少钱?请输入:"))
        saving(num)
        continue
    elif keyboard_input == "3":
        num = int(input("您想要取多少钱?请输入:"))
        get_money(num)
        continue
    else:
        print("程序退出啦")
        break  # 通过break退出循环

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

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

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

相关文章

2023 金砖国家职业技能大赛网络安全省赛理论题样题(金砖国家未来技能挑战赛)

2023 金砖国家职业技能大赛网络安全省赛理论题样题&#xff08;金砖国家未来技能挑战赛&#xff09; 一、参加比赛的形式 团队参与&#xff0c;每队2名选手&#xff08;设队长1名&#xff09;。 二、项目项目阶段简介 项目由四个阶段组成&#xff0c;将按顺序完成。向参与者…

21、命令执行

文章目录 一、命令执行概述1.1 基本定义1.2 原理1.3 两个条件1.4 命令执行漏洞产生的原因1.5 管道符号和通用命令符 二、远程命令执行2.1 远程命令执行相关函数2.2 远程命令执行漏洞的利用 三、系统命令执行3.1 相关函数3.2 系统命令执行漏洞利用 四、命令执行漏洞防御 一、命令…

[python库] mistune库的基本使用

前言 mistune库是一个解析Markdown的利器&#xff0c;使用起来非常简单。当我们想要解析Markdown格式的文档时&#xff0c;只需两步就能将其转换成html格式。如下&#xff1a; import mistune mistune.html(YOUR_MARKDOWN_TEXT)安装方式也非常简单&#xff0c;dddd&#xff1…

qt creator配置opencv库 (MSVC版本)

目录 1. MSVC版本 1.1 使用cmake编译opencv 1.2 再使用visual studio 2019生成opencv的lib,dll 1.3 配置opencv的系统环境变量 1.4 新建qt项目 1. MSVC版本 1.1 使用cmake编译opencv 1.2 再使用visual studio 2019生成opencv的lib,dll 1.3 配置opencv的系统环境变量 D:…

图形视图【例】对数计算尺

文章目录 对数计算尺 &#x1f4cf;示例代码 对数计算尺 &#x1f4cf; 对数可以有效地把乘法转换成加法运算,比如: l n A ∗ B l n A l n B ln^{A*B} ln^{A} ln^{B} lnA∗BlnAlnB 对数计算尺就是利用对数性质把乘法换成加法的一种辅助工具. 图片来自《程序员的数学1》 …

C //习题10.4 有两个磁盘文件“A“和“B“,各存放一行字母,今要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件“C“中去。

C程序设计 &#xff08;第四版&#xff09; 谭浩强 习题10.4 习题10.4 有两个磁盘文件"A"和"B"&#xff0c;各存放一行字母&#xff0c;今要求把这两个文件中的信息合并&#xff08;按字母顺序排列&#xff09;&#xff0c;输出到一个新文件"C"…

智能优化算法应用:基于爬行动物算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于爬行动物算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于爬行动物算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.爬行动物算法4.实验参数设定5.算法结果6.参考…

【Jeecg Boot 3 - 保姆级】第1节 docker + redis + nginx + redis一键安装启动

一、前言 ▶ JEECG-BOOT 开源版难以吃透的原因 ▶ 为了针对上面痛点&#xff0c;笔者做了如下安排 ▶ 你能收获什么 二、效果(第一节效果) ▶ 启动后端 &#xff1e; 日志 &#xff1e; 接口文档 ▶ 启动前端 三、准备工作 四、实战 ▶ 1、服务器安装 Stag…

如何配置Modbus转Profinet网关与6台232 Modbus伺服通信

Modbus转Profinet网关连接6台232 Modbus伺服同时控制的解决方案不仅简化了设备连接&#xff0c;还减少了人力投入和维护成本。通过Modbus转Profinet网关&#xff0c;操作人员只需对Profinet网关进行设置和监控&#xff0c;即可实现对6台232 Modbus伺服的集中控制。 Modbus转Pro…

vuepress-----22、其他评论方案

vuepress 支持评论 本文讲述 vuepress 站点如何集成评论系统&#xff0c;选型是 valineleancloud, 支持匿名评论&#xff0c;缺点是数据没有存储在自己手里。市面上也有其他的方案, 如 gitalk,vssue 等, 但需要用户登录 github 才能发表评论, 但 github 经常无法连接,导致体验…

Microsoft 365 Copilot正式上线,如何稳定访问体验?

如果将微软对人工智能的投资看成一场豪赌&#xff0c;Microsoft Copilot无疑是现阶段最受瞩目的赌注。2023年9月正式发布的Microsoft Copilot是一种基于大型语言模型&#xff08;LLM&#xff09;和微软图形&#xff08;Microsoft Graph&#xff09;的数据和人工智能&#xff08…

[java学习日记]反射、动态代理

目录 一.反射的简单解释与获取字节码文件对象 二.获取构造方法对象Constructor 三.反射获取字节码文件中的成员变量Field 四.反射获取字节码文件中的成员方法&#xff1a;Method 五.反射练习&#xff1a;保存信息 六.反射练习&#xff1a;利用配置文件&#xff08;存储类名…

SAP 后继物料简介

后继物料(Discontinued Part)是SAP系统提供的一项用于物料继承与物料永久性替换的功能。在企业的日常生产业务中,经常会出于技术原因或成本原因进行大批量的物料替换或物料升级。比如说,企业可以用一种可靠性更高的组件替换先前使用的组件,或者出于节省成本的目的,使用一…

Linux 多进程并发设计-进程对核的亲缘设置

1设计结构 2 设计优点 1 充分利用多核系统的并发处理能力2 负载均衡3 职责明确&#xff0c;管理进程仅负责管理&#xff0c;工作进程仅负责处理业务逻辑 3 演示代码: //main.cpp #define _GNU_SOURCE #include<sys/types.h> #include<sys/wait.h> #include <…

设计模式基础——概述(1/2)

目录 一、设计模式的定义 二、设计模式的三大类别 三、设计模式的原则 四、主要设计模式目录 4.1 创建型模式&#xff08;Creational Patterns&#xff09; 4.2 结构型模式&#xff08;Structural Patterns&#xff09; 4.3 行为型模式&#xff08;Behavioral Patterns&…

alma centos8 dvd 安装jumpserver堡垒机

安装脚本 # 更新系统yum update yum install -y wget curl tar gettext iptables# 安装jumpserver堡垒机curl -sSL https://resource.fit2cloud.com/jumpserver/jumpserver/releases/latest/download/quick_start.sh | bash安装过程 升级系统、安装需要的软件 安装jumpserve…

报错处理集

这个报错处理集的错误来源于编译arm平台的so文件产生的。但是后续可以补充成linux一个大的错误处理集。 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 第一次整理的时间是2023年12月8日10:05:59&#xff0c;以下错误来源于欧拉系统编译…

高端的露营装备网站搭建的作用是什么

近些年发展促进了露营热潮&#xff0c;周边游也多了起来&#xff0c;城市中高频工作带来的烦恼使得很多人想要放松&#xff0c;露营无疑是接触大自然很好的方式&#xff0c;而选择好的露营装备同样重要&#xff0c;还包括门店经营者&#xff0c;选择好的品牌合作也能带来很多生…

编程怎么学才能快速入门,分享一款中文编程工具快速学习编程思路,中文编程工具之分组框构件简介

一、前言&#xff1a; 零基础自学编程&#xff0c;中文编程工具下载&#xff0c;中文编程工具构件之扩展系统菜单构件教程 编程系统化教程链接 https://jywxz.blog.csdn.net/article/details/134073098?spm1001.2014.3001.5502 给大家分享一款中文编程工具&#xff0c;零基础…

VSCODE 运行C程序缓慢解决方法之一

最近更换了mingw的版本&#xff0c;安装路径与之前的mingw路径不大一样。结果发现代码运行的时候很慢&#xff0c;弹出窗口后&#xff0c;迟迟没有打印任何东西&#xff0c;就像卡死了一样。试过网上说的一堆方法&#xff0c;没有什么用。 我按照以下流程进行检查: 1.检查min…