python基础知识总结(第三篇):函数

 声明: 
              1. 本文主要是记录学习之用,自行整理以及方便记忆
              2. 若有错误不当之处, 请指出

系列文章目录

python基础知识总结(第一篇):基础语法

python基础知识总结(第二篇):基础语句(判断语句和循环语句)

python基础知识总结(第四篇):python数据容器

python基础知识总结(第五篇):文件操作、异常、模块与包


目录

一、函数初阶

1.函数定义

2.函数的参数

3.函数的返回值

4.变量的作用域

二、函数进阶

1.函数多返回值

2.函数多种传参方式

(1) 位置传参

(2) 关键字传参

(3) 不定长传参

(4) 缺省传参

3.匿名函数

(1) 函数作为参数传递

(2) lambda匿名函数


一、函数初阶

1.函数定义

函数:是组织好的,可重复使用的,用来实现特定功能的代码段

语法:

def 函数名(传入参数):

        函数体

        return 返回值

# 定义一个函数,输出相关信息
def say_hi():
    print("你好,python")

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

说明:函数必须先定义,才能调用

2.函数的参数

参数作用:在函数运行的时候,接受外部传入的数据

示例:

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

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

说明:

  • 函数定义中的参数,称之为形式参数
  • 函数调用中的参数,称之为实际参数
  • 函数的参数数量不限,使用逗号分隔开
  • 传入参数的时候,要和形式参数一一对应,逗号隔开
3.函数的返回值

返回值:程序中函数完成事情后,最后给调用者的结果

语法:

def 函数名(传入参数):

        函数体

        return 返回值

变量 = 函数(参数)

这样函数的返回值就会被存进变量里

# 定义一个函数,完成2数相加功能
def add(a, b):
    result = a + b
    # 通过返回值,将相加的结果返回给调用者
    return result



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

变量作用域指的是变量的作用范围(变量在哪里可用,在哪里不可用)

分为两类:局部变量和全局变量

  • 局部变量:定义在函数体内部的变量,即只在函数体内部生效
# 局部变量
def test_a():
    num = 100
    print(num)


test_a()
# 出了函数体,局部变量就无法使用了
print(num)
  • 全局变量:在函数体内外都能生效的变量
# 全局变量
num = 200

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

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

test_a()
test_b()
print(num)
  • global关键字:可以在函数内部声明变量为全局变量
# 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)

运行结果:

二、函数进阶

1.函数多返回值

如果有多个返回值,用逗号隔开

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

x, y, z = test_return()
print(x)
print(y)
print(z)
2.函数多种传参方式
(1) 位置传参

调用函数时根据函数定义的参数位置来传递参数

def user_info(name, age, gender):
    print(f"姓名是:{name}, 年龄是:{age}, 性别是:{gender}")
# 位置参数
user_info('小明', 20, '男')
(2) 关键字传参

调用函数时通过“键=值”形式传递参数

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


# 关键字参数
user_info(name='小王', age=11, gender='女')
# 可以不按照参数的定义顺序传参
user_info(age=10, gender='女', name='潇潇')
# 可以和位置参数混用,位置参数必须在前,且匹配参数顺序
user_info('甜甜', gender='女', age=9)
(3) 不定长传参

不定长参数也叫可变参数,用于不确定调用的时候会传递多少个参数(不传参也可以)的场景

类型:位置传递和关键字传递

  • 位置不定长传递以*号标记一个形式参数,以元组的形式接受参数,形式参数一般命名为args
# 位置不定长, *号
# 不定长定义的形式参数会作为元组存在,接收不定长数量的参数传入
def user_info(*args):
    print(f"args参数的类型是:{type(args)},内容是:{args}")


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

运行结果:

  • 关键字不定长传递以**号标记一个形式参数,以字典的形式接受参数,形式参数一般命名为kwargs
# 不定长 - 关键字不定长, **号
def user_info(**kwargs):
    print(f"args参数的类型是:{type(kwargs)},内容是:{kwargs}")


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

运行结果:

(4) 缺省传参

缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值(所有位置参数必须出现在默认参数前,包括函数定义和调用)

作用:当调用函数时没有传递参数,就会默认使用缺省参数对应的值

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

user_info('小天', 13)
3.匿名函数
(1) 函数作为参数传递

这是一种计算逻辑的传递,而非数据的传递

# 定义一个函数,接收另一个函数作为传入参数
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)

运行结果:

(2) lambda匿名函数

语法:lambda 传入参数: 函数体(一行代码)

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


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

运行结果:

注意事项:

  • 匿名函数用于临时构建一个函数,只用一次的场景
  • 匿名函数的定义中,函数体只能写一行代码,如果函数体要写多行代码,不可用lambda匿名函数,应使用def定义带名函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值