首页 > 编程语言 >python函数三:拆包和交换变量值、引用、匿名函数

python函数三:拆包和交换变量值、引用、匿名函数

时间:2024-09-20 19:51:02浏览次数:12  
标签:函数 get python sum 拆包 year print lambda

文章目录

1. 拆包和交换变量值

1.1 拆包

拆包:把组合形成的元组形式的数据,拆分出单个元素内容。

变量名1,变量名2,... = 结果

实例:
(1)在一个函数中,使用return返回求解两个数的和、差;

(2)使用items()方式遍历处理字典中存储的学生信息各个键与值;

(3)分别使用拆包方式来拆分数据。

# 1. 定义函数,返回多个数据
def get_sum_sub(x,y):
    sum = x + y
    sub = x - y
    return sum, sub
result = get_sum_sub(2,3)
print(result)
result[0]
result[1]


# 2. items()处理
student = {"name":"刘向阳","age":23,"gender":"男"}
for item in student.items():
    print(item)
    key = item[0]
    value = item[1]

# 3. 拆包
ret1,ret2 = get_sum_sub(2,3)
print(f"和为:{ret1}")
print(f"差为:{ret2}")

for (key,value) in student.items():
    print(f"{key}:{value}")

总结

  • 当要把一个组合的结果快速获取元素数据时,可以使用拆包来完成。
  • 对列表、元组数据结果,都可以使用拆包方式。

1.2 交换变量值

使用拆包方式可以用于交换变量的值。
在这里插入图片描述
注意
交换两个变量的方式较多,但最简单的是:直接使用拆包方式交换值。

2. 引用

2.1 了解引用

引用可以通俗的称为内存地址值。在Python中,引用有两种表现形式:

(1)十进制数 5040624

(2)十六进制数 0x45AC6 [后期讲解]

注意:在Python中,变量值是通过引用来传递的。

查看引用语法:

id(变量名)

说明:可以把id()值理解为变量所在内存的地址值。

实例:
(1)定义一个变量a,查看变量的引用值;

(2)思考:有两个列表变量[1, 2],分别使用==和is去比较,结果如何?

# 1.定义变量,查看引用
a = 10
print(a)
print(id(a))
# 明确: 内存地址值是随机分配

# 2. == is
# is比较的是内存地址值
# ==比较内容值
list1= [1,2]
list2 = [1,2]
print(list1 == list2)  # True
print(list1 is list2)  # False
print(id(list1))
print(id(list2))

注意

  • 比较两个变量的值是否相等时,使用==
  • 比较两个变量的内存地址值是否相同时,使用is关键字。

2.1 把引用当作参数传递

如果在定义函数时设定了参数,则在调用函数时也需要传递参数值。而给函数传递参数本质就是:把引用当作参数进行传递。
实例:
(1)定义有一个参数的函数,并在调用函数时传递一个参数值;

(2)同时输出参数值与在函数内的参数的引用值,对比效果。

# 1.定义有参数的函数
def fn(a):
    print("====================")
    print(f"a的引用值:{id(a)}")
    print("====================")

# 2.外面输出、函数内输出
number = 10
print(id(number))
fn(number)

总结:当把变量传递给函数时,本质上是传递变量的引用值。

3. 匿名函数

3.1 lambda语法

定义匿名函数需要使用lambda关键字,可以创建小型匿名函数。

匿名函数表示没有名字的函数,这种函数得名于省略了用def关键字声明函数的标准步骤。

定义匿名函数语法:

lambda 参数列表 : 表达式

调用匿名函数语法:

函数名 = lambda 参数列表 : 表达式
函数名([参数列表])

实例:
(1)求解两个数之和;

(2)使用def定义函数,完成求和操作;

(3)使用匿名函数简化函数求和操作。

# 1. 定义求和函数
def get_sum(x,y):
    result = x + y
    return result

# 2. 调用
print(get_sum(1,2))
print(get_sum)

# 3. 匿名函数
get_sum = lambda x,y:x+y
print(get_sum(1,2))
print(get_sum)

3.2 lambda的应用

在实际应用中,为便于简化函数传递处理,我们可以使用lambda表达式作为参数进行传递,但要注意:传递的是一个引用。

再来看一下匿名函数的语法。

定义语法:

lambda 参数列表 : 表达式

调用语法:

函数名 = lambda 参数列表 : 表达式
函数名([参数列表])

实例:
(1)把lambda表达式当作参数传递给函数;

(2)求解两个数之和,注意:在函数中定义变量并传递。

# 1. 定义函数
def get_sum(fn):
    print("==========================")
    print(f"输出fn的引用值:{fn}")

    x = 100
    y = 200
    print(f"求和:{fn(x,y)}")
    print("==========================")

# 2. 调用 (传递匿名函数)
# 把引用当作参数直接传递 -闭包
get_sum(lambda x,y:x+y)

3.3 使用使用函数形式来求解某天是该年的第几天?

比如,2023年1月3日是2023年的第3天。

提示:要区分闰年、平年,闰年指的是能被4整除且不能被100整除,或者能被400整除的年份。

# 1.定义函数: 求是否是闰年
def is_run_year(year):
    """
    判断是否是闰年
    :param year: 年份
    :return: 是闰年 True;   不是闰年: False
    """
    if (year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0):
        return True
    return False

# 2.求解第几天: 之前月份的总天数+当前日期
def get_days(year, month, day):
    days = 0
    # 判断年份
    # if is_run_year(year):
    if is_run_year(year) == True:
        day_lists = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30]
    else:
        day_lists = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30]
    # 通过月份数求解之前月份的总天数
    temp_ret = 0
    i = 0
    while i < month:
        temp_ret += day_lists[i]
        i += 1
    # +当前日期
    days = temp_ret + day
    return days

# 3.输入年月日、调用函数
in_year = int(input("请输入年份:"))
in_month = int(input("请输入月份:"))
in_day = int(input("请输入日期:"))
print(f"{in_year}年{in_month}月{in_day}日是{in_year}年的第{get_days(in_year,in_month,in_day)}天.")

标签:函数,get,python,sum,拆包,year,print,lambda
From: https://blog.csdn.net/m0_70882914/article/details/142374312

相关文章

  • 探索 Python 的火焰:Fire 库的神秘力量
    文章目录......
  • python模块之json
    json模块(1)python中的json格式是轻量级的文本数据交互格式(2)json和字典以一样一、将python数据类型换成字典json.dump  json.dumps二、将json格式转换成python类型(1)dumps 将python类型转换成json格式importjsond={"name":"zs","age":18}print(type(d))#<class'di......
  • python模块之xlrd
    一、xlrd模块1、下载方式(1)方式一在dos下pip install  xlrd==1.2.0方式二:File-settings-project:pythonsssss-+-搜索xrldimportxlrddata=xlrd.open_workbook(r"C:\Users\Administrator\Desktop\aa.xls")print(data.sheet_names())#获取页面名称['Sheet1','......
  • python语句
    python常用的语句常见的语句一、if语句1、if但分支if判断条件:执行语句1else:执行语句2案例:name=input("请输入账号:")ifname=="admin":print("账号正确")else:print("账号错误")2、i2f多分支if判断条件1:执行语句1elif判断条件2:执行语句2elif判断条件3:......
  • python字典
    字典dict字典的字符类型<class'dict'>字典表达符:{}1、字典(dict)是一种可变容器模型,且可存储任意类型对象2、字典的每个键,值key,value键值对形式3、键值用:分割,每个键值对之间用逗号分隔4、整个字典用{}包含5、字典键唯一,值不是唯一的d={'name':'hz','age':18}print(ty......
  • python字符串
    字符串string使用单引号''或者双引号""来创建字符串。字符串表达符为:“”str="abcdefcnamceaca"print(str[0:3]):输出abc,从索引0到3(不含)。print(str[1:3]):输出bc,从索引1到3(不含)。print(str[:-1]):输出abcdefghjk,从开头到倒数第一个字符(不含)。print(str[2:-1]):输出cdefghjk,......
  • python基本操作
    98+100001001400000100print(a&b)真真都取其他不取000000000print(a|b)都取假假不取0000110113print(a^b)都取真真假假不取0000110113print(~a)-10a=138+4+100001101b=64+200000110p......
  • python函数
    函数函数是组织好的,可重复使用,用来实现单一,或相关联功能的代码段def函数名()1无参数defhs1():print(1)hs1()#12有单个参数defhs1(a):print(a+1)hs1(2)#33有多个参数defhs1(a,b):print(a+b)hs1(2,3)#54默认参数defhs1(a,b=18):print(a+b)hs1(2)#20......
  • python基础知识
    python的介绍1、python是一个编程语言;2、python的版本:2.0版本,3.0版本  ,python中最新版本3.1263、python下载地址:https://www.python.org/downloads/4、下载后得到安装包,我们已经下载好了点击安装之前,我们在盘符下新建一个文件夹选择自动义安装下一步:选择新建的文件夹点......
  • python模块1
    python模块1、python的模块就是一个python文件,后缀.py包含了Python对象定义和Python语句。模块让你能够有逻辑地组织你的Python代码段。把相关的代码分配到一个模块里能让你的代码更好用,更易懂2、python的模块中可以写:函数、类、变量、代码3、模块的导入a、python自带的模......