一、引用变量

在大多数编程语言中,值的传递通常可以分为两种形式“值传递与引用(地址)传递”,但是在Python中变量的传递基本上都是引用(地址)传递。

验证Python中变量的引用关系:可以使用内置方法id(),其参数就是要显示的变量信息 => id(变量名称)

代码展示:

a = 10
print(id(a))

运行效果:

在这里插入图片描述

其中变量a在内存底层的存储形式如下图所示:

在这里插入图片描述

说明: 首先在计算机内存中创建一个数值10(占用一块内存空间);在栈空间中声明一个变量,如a;再把数值10的内存地址赋予给变量a,形成所谓的“引用关系”

思考: 如果把一个变量赋予给另外一个变量,内存地址会有什么变化吗?
这就需要我们用到Python中关于可变和非可变数据类型了。

二、可变类型与非可变类型

1、不可变类型

不可变类型 是指内存地址一旦固定,其值就不能发生改变,若不可变类型重新赋值,id(变量)会改变 。
不可变类型包括:
数值类型(int整型、float浮点类型)
bool类型(True和False)
字符串类型(str)
元组类型(tuple)

代码展示:

a = 10
b = a
a = 100

print(b)
print(id(a))
print(id(b))

运行效果:

在这里插入图片描述

原理图如下:

在这里插入图片描述

注: 不可变数据类型(数值)在赋值以后,其中一个值的改变不影响另外一个变量,因为两者指向空间地址不同。不可变类型在函数中,局部或全局的改变对外部和内部都没有任何影响。

2、可变类型

可变类型是指内存地址一旦固定,其值是可以发生改变,若可变类型重新赋值,id(变量名)不会改变。
不可变类型包括:
列表(list)
字典(dict)
集合(set)

代码展示:

a = [1, 2, 3]
print(id(a))
# 向内存中追加新数据(对数据进行改变只能通过数据类型.方法()实现)
a.append(4)
print(id(a))

运行效果:

在这里插入图片描述

原理图如下:

在这里插入图片描述

注:可变类型在函数中,如果在全局或局部中对可变类型进行增删改操作,其外部和内部都会受到影响。

三、lambda表达式

1、lambda表达式应用场景

如果一个函数有一个返回值,并且只有一句代码,可以使用lambda表达式简化。

2、lambda表达式基本语法

变量 = lambda 函数参数:表达式(函数代码 + return返回值)
# 调用变量
变量()

3、lambda表达式应用

1、lambda表达式简化不带参数函数

代码展示:

# def get_show():
#     return 10 + 20
#
# 
# print(get_show())

# 使用lambda表达式简化上面函数的写法
get_show = lambda: 10 + 20
print(get_show())

运行效果:

在这里插入图片描述

2、lambda表达式简化带参数函数

代码展示:

# def get_show(a, b):
#     return a + b
#
#
# print(get_show(10, 100))

# lambda表达式简化带参数的函数的写法
get_show = lambda a, b: a + b
print(get_show(10, 100))

运行效果:

在这里插入图片描述

3、lambda表达式简化带默认参数函数

代码展示:

# def get_show(a, b=20):
#     return a + b
#
#
# print(get_show(10, 100))

# lambda表达式简化带默认参数的写法
get_show = lambda a, b=20: a + b
print(get_show(10, 100))

运行效果:

在这里插入图片描述

3、lambda表达式简化带传入元组的写法

代码展示:

# def get_show(*a):
#     return a
#
#
# print(get_show(10, 100, 20, 30))

# lambda表达式简化带传入元组的写法
get_show = lambda *a: a
print(get_show(10, 100, 20, 30))

运行效果:

在这里插入图片描述

4、lambda表达式简化带传入字典的写法

代码展示:

# def get_show(**a):
#     return a
#
#
# print(get_show(id="10086", name="海市公约"))

# lambda表达式简化带传入字典的写法
get_show = lambda **a: a
print(get_show(id="10086", name="海市公约"))

运行效果:

在这里插入图片描述

5、lambda表达式简化带有if判断的写法

代码展示:

# lambda表达式简化带有if判断的写法
is_ok = lambda user_name, user_pass: 1 if user_name == "admin" and user_pass == "admin123" else 0

if is_ok("admin", "admin888") > 0:
    print("登录成功")
else:
    print("登录失败")
    

运行效果:

在这里插入图片描述

四、Python内置模块

1、Python内置模块介绍

Python 模块是一个Python文件 ,以 .py 结尾,包含了 Python 对象定义和Python语句。
模块能定义函数,类和变量,模块里也能包含可执行的代码。
在Python中,模块通常可以分为两大类: 内置模块(目前使用的)和自定义模块。
在有些情况下,如导入的模块名称过长,建议使用as关键字对其重命名操作,以后在调用这个模块时,我们就可以使用别名进行操作。

2、Python内置模块的导入方式

  • import 模块名
  • import 模块名 as 别名
  • from 模块名 import *
  • from 模块名 import 功能名

注意:

  • 在有些情况下,如导入的模块名称过长,建议使用as关键字对其重命名操作,以后在调用这个模块时,我们就可以使用别名进行操作。
  • import代表导入某个或多个模块中的所有功能,但是有些情况下,我们只希望使用这个模块下的某些方法,而不需要全部导入。这个时候就建议采用from模块名import 功能名

代码展示:

import math
import pandas as pd
from time import *
from DrissionPage import Chromium

更多推荐