【python实操】python小程序之交换两个变量的值以及不定长参数如何传参

引言

python小程序之交换两个变量的值以及不定长参数如何传参

一、交换两个变量的值

1.1 题目

交换两个变量

1.2 代码

1.2.1 引入第三个变量

a = 10
b = 20

# 第三个变量
c = a
a = b
b = c
print(a, b)

输出结果:
在这里插入图片描述

1.2.2 数学方法

a = 10
b = 20
# 数学方法,a+b=30
a = a + b
b = a - b
a = a - b
print(a, b)

输出结果:
在这里插入图片描述

1.2.3 python特有优雅方法

# python专有
print(a, b)
a, b = b, a
print(a, b)

输出结果:
在这里插入图片描述

1.3 代码解释

1.3.1 引入第三个变量

  • 引入c作为中间变量进行变量交换

1.3.2 数学方法

  • 将变量的和、差等进行计算从而进行变量交换

1.3.3 python特有优雅写法

在python中,a, b = b, a 是一种非常优雅且常见的交换两个变量值的方法

  1. b, a 这个表达式首先被计算,但是它的值不会立即赋给 ab
  2. python创建了一个元组 (b, a),这个元组包含了 ba 当前的值
  3. 然后,这个元组被解包,第一个元素(原 b 的值)被赋值给 a,第二个元素(原 a 的值)被赋值给 b

这个过程是在一个单独的操作中完成的,保证了在赋值过程中不会丢失任何一个变量的值

二、不定长参数如何传参

2.1 题目

如何输入不定长参数

2.2 代码

def func(*args,
         **kwargs):
    print(type(args), args)
    print(type(kwargs), kwargs)
    print('-' * 30)


func()
func(1, 2, 3)  # 位置传参, 数据都给 args
func(a=1, b=2, c=3)  # 关键字传参, 数据都给 kwargs
func(1, 2, 3, a=4, b=5, c=6)

输出结果:
在这里插入图片描述

2.3 代码解释

这段python代码定义了一个名为 func 的函数,它接受任意数量的位置参数(通过 *args)和任意数量的关键字参数(通过 **kwargs

  1. def func(*args, **kwargs):
    • def 关键字用于定义一个函数
    • *args 是一个特殊语法,它允许函数接收任意数量的位置参数,并将它们作为一个元组(tuple)存储在变量 args
    • **kwargs 是另一个特殊语法,它允许函数接收任意数量的关键字参数,并将它们作为一个字典(dictionary)存储在变量 kwargs
  2. 在函数体内部:
    • print(type(args), args) 打印出 args 的类型和值
    • print(type(kwargs), kwargs) 打印出 kwargs 的类型和值
    • print('-' * 30) 打印一个由30个减号组成的分隔线
  3. 函数调用:
    • func() 不传递任何参数,因此 argskwargs 都将为空
    • func(1, 2, 3) 传递了三个位置参数,它们将存储在 args 中作为一个元组,而 kwargs 将为空
    • func(a=1, b=2, c=3) 传递了三个关键字参数,它们将存储在 kwargs 中作为一个字典,而 args 将为空
    • func(1, 2, 3, a=4, b=5, c=6) 同时传递了位置参数和关键字参数,位置参数存储在 args 中,关键字参数存储在 kwargs

这显示了函数如何根据传递给它的参数类型来存储这些参数。位置参数存储在 args 中,而关键字参数存储在 kwargs

三、思考

3.1 交换两个变量的值

  • 引入第三个变量的方法的本质是引入中间变量
  • 数学方法的本质也是引入中间量(和、差等)
  • python特有写法是创建了一个元组,然后解包赋值进行变量交换

3.2 不定长参数如何传参

  • 参数传参的方式:
  1. 位置传参:在函数调⽤的时候, 按照形参的顺序, 将实参值传递给形参
  2. 关键字传参:在函数调⽤的时候, 指定数据值给到那个形参
  3. 混合使用:关键字传参必须写在位置传参的后⾯;不要给⼀个形参传递多个数据值
  • 传参完整顺序:def 函数名(普通函数, *args, 缺省参数, **kwargs)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值