python入门篇08- 函数进阶-参数传递

全文目录,一步到位

  • 1.前言简介
    • 1.1 专栏传送门
      • 1.1.1 上文小总结
      • 1.1.2 上文传送门
  • 2. python基础使用
    • 2.1 函数进阶 - 参数传递
      • 2.1.1 设置多个返回值
    • 2.2 传参方式(多种)
      • 2.1.0 代码准备
      • 2.1.1 方式一: `参数位置传递`
      • 2.1.2 方式二: `关键字参数传递`
      • 2.1.3 方式三: `缺省参数传递`
      • 2.1.4 方式四: `不定长参数传递`
      • 2.1.5 方式五: `关键字不定长参数传递`
    • 2.3 函数参数传递
      • 2.3.1 正常写法
      • 2.3.2 lambda匿名函数写法
  • 3. 基础语法总结案例
  • 4. 文章的总结与预告
    • 4.1 本文总结


1.前言简介

1.1 专栏传送门

=> 传送: python专栏 <=

1.1.1 上文小总结

介绍了几种数据容器 以及相对应的api操作
应用场景以及基础小案例

1.1.2 上文传送门

=> python入门篇07-数据容器(序列 集合 字典,json初识)基础(下)

2. python基础使用

2.1 函数进阶 - 参数传递

2.1.1 设置多个返回值

def test_func():
    return 1, 2, 3


# 看一种报错
# arg1, arg2 = test_func()
# print(arg1)  # ValueError: too many values to unpack (expected 2)


arg1, arg2, arg3 = test_func()
print(arg1)  # 1
print(arg2)  # 2
print(arg3)  # 3

print(test_func())  # (1, 2, 3) 元组

2.2 传参方式(多种)

2.1.0 代码准备

def test_func01(name, age, address):
    print(f"名字:{name},年龄:{age},地址:{address}")

2.1.1 方式一: 参数位置传递

test_func01("张三", 13, "地球")

2.1.2 方式二: 关键字参数传递

(这种类似 k-v结构 位置就可以不对应了)

test_func01(name="张三", address="地球", age=13)

ps: 看一个报错
TypeError: test_func01() missing 1 required positional argument: ‘age’

# test_func01(name="张三", address="地球")

2.1.3 方式三: 缺省参数传递

给参数设置默认值 不传递也可以
注意 设置默认值的多个参数 都必须放到最后

test_func01(name="张三", address="地球", age=13)

测试代码+整体效果如下:

# 名字:张三,年龄:13,地址:地球
# 名字:张三,年龄:13,地址:地球
# 名字:张三,年龄:13,地址:火星
# 名字:张三,年龄:13,地址:中国
test_func02(age=13, name="张三")
test_func02("张三", 13)
test_func02(age=13, address="火星", name="张三")
test_func02("张三", 13, "中国")

2.1.4 方式四: 不定长参数传递

不定长参数(类似java的可变参数)
不定长定义的形式参数作为元组存在 用 “*” 表示

def test_func03(*args):
    print(args)   # (1, 2, 3, 4)
    print(type(args))  # 


test_func03(1, 2, 3, 4)

2.1.5 方式五: 关键字不定长参数传递

变成 字典 用 “**” 表示
java没有此写法 直接传递map

def test_func04(**kwargs):
    print(kwargs)  # {'age': 12, 'name': '张三'}
    print(type(kwargs))  # 


test_func04(age=12, name="张三")

2.3 函数参数传递

这个有点意思, 也就是把动作行为装成参数进行传递了

2.3.1 正常写法

参数传递的是函数 参数名随便写 也就是将函数运算过程(不是参数) 传递进去

def test_func01(test_func):
    result = test_func(1, 2)
    print(type(test_func))  # 
    print(result)  # 3


def test_func02(arg1, arg2):
    return arg1 + arg2


test_func01(test_func02)  # 3

2.3.2 lambda匿名函数写法

对上面函数进行改造 (一行代码lambda ,多行使用def)

test_func01(lambda x, y: x + y)

3. 基础语法总结案例

python入门篇09- 文件操作,函数, 包及模块的综合案例
python入门篇08- 函数进阶-参数传递_第1张图片

4. 文章的总结与预告

4.1 本文总结

函数的不同传递方式, 使用更加灵活



作者pingzhuyan 感谢观看

你可能感兴趣的:(python,python,开发语言,java,pycharm,idea)