第四课 Python基础语法(一)

一、变量

1. 二进制与十六进制

我们在前面几章中学到过,计算机会把数据保存在内存中,然后从内存中读取数据进行操作。当CPU需要执行涉及该数据的指令时,就需要知道这个数据在内存中的地址。类似如果送快递,就需要知道我们的家庭住址。而内存地址是一大串连续的二进制数字,现在的家用计算机一般是32位或64位的,这表示对应的内存地址有32位或64位。如此长的数字会对我们的阅读带来巨大的困难,为了方便我们阅读与操作,一般采用十六进制来表内存,因为十六进制可以非常方便与二进制进行转换,每四位二进制数字可以转换为一位十六进制数字。十六进制通常以0x作为前缀,后面跟着一串十六进制数字。

例: 二进制:1111111111111111111110000000001101000101011000100010000000000000 十六进制:0xfffff80345622000 十进制:18446735291665498112

补充说明: 理解二进制、十六进制与内存地址的关系,有助于理解底层原理,但初学者可以暂时跳过,不影响后续学习。

2. python中的变量

但是写成十六进制去访问内存地址依然很不方便,万幸的是随着几十年的发展,现代编程语言有了更高效操作方式------变量 。 在Python中当你在解释器中输入一串字符串或者数字的时候,计算机会在内存中开辟一块空间用来保存这些数据。但是仅仅是这样是不够的,因为如果没有一个名字来标识这块内存位置,当你想再次使用其中保存的数据时,你就不得不重新输入一遍完全相同的数据,计算机也会在另一个新的内存位置再保存一份相同数据的副本。这不仅极其繁琐、容易出错,而且浪费内存空间。为了解决这个问题,现代编程语言引入了变量的概念。变量为存储在内存中的数据赋予了一个名字(标识符),通过这个名字,我们就可以方便地访问或修改那块内存中的数据,无需重复输入原始数据。

比如下面这个例子

python 复制代码
print('Hello Wolrd') # 打印Hello World,打印完成后会销毁字符串'Hello Wolrd'
# 如果我想要再次打印这个字符串就需要重新输入一遍
print('Hello Wolrd')

# 使用变量
a='Hello Wolrd' 
print(a)
print(a)

注: 变量的引入极大地提高了代码的可读性和可维护性。

3. 变量的创建

变量的基本用法就是赋值。下面这行代码创建了一个名叫 x 的变量,然后通过=运算符,让x指向整数对象1234。这样当我们需要再次使用1234时,只需要输入x就可以了。 在Python中,=运算符用于赋值 (assignment),它的作用是将右侧的对象与左侧的变量名绑定(bind)起来,与数学运算中的=并不相同。理解赋值操作的本质是理解Python变量机制的关键。

python 复制代码
x=1234

强调: = 在Python中是赋值,不是等于。等于的判断使用 ==

4. 在Python中变量的创建过程

在Python中,变量的创建是一个简洁而强大的过程,遵循以下关键原则:

  1. 赋值即创建 变量在首次赋值时被自动创建,无需预先声明类型。当你写下 x = 1234 时:

    • Python 在内存中创建整数对象 1234

    • 将变量名 x 绑定到这个对象

    • 此后通过 x 即可访问该对象的值

    python 复制代码
    # 变量在首次赋值时创建
    count = 10       # 创建整数变量
    message = "Hello"  # 创建字符串变量
  2. 动态类型 Python 是一种动态类型语言,这意味着变量的类型是在运行时自动推断的,而不是像静态类型语言(如 Java 或 C++)那样需要在声明时显式指定。 你可以随时将一个变量绑定 到不同类型的对象。

    python 复制代码
    x = 10        # x 现在是整数
    print(type(x))  # 输出: <class 'int'>
    
    x = "Hello"   # x 现在是字符串
    print(type(x))  # 输出: <class 'str'>
    
    x = True # x 现在是布尔
    print(type(x)) # 输出: <class 'bool'>

    这种灵活性使得 Python 编程更加简洁,但也需要注意类型相关的错误,因为这些错误可能会在运行时才暴露出来。

    补充说明: 可以使用 isinstance() 函数进行类型检查,避免运行时错误。例如: isinstance(x, str)

  3. 变量是对对象的引用 在 Python 中,变量并不是直接存储数据,而是存储对内存中对象的引用。这意味着,当你创建一个变量并赋值时,你实际上是在告诉 Python:这个变量指向某个对象,而不是将对象的值直接存储在变量中。

    当多个变量引用同一个对象时,修改其中一个变量的内容,可能会意外影响另一个变量。例如:

    python 复制代码
    a = "Hello"
    b = a           # b 引用与 a 相同的字符串对象
    
    print(a)  # 输出: Hello
    print(b)  # 输出: Hello
    
    b += " World"   # 修改 b 引用的字符串对象
    
    print(a)  # 输出: Hello  # a 没有被修改,因为字符串是不可变的
    print(b)  # 输出: Hello World
    
    # 注意:当 b 进行字符串拼接时,实际上创建了一个新的字符串对象。
    # 这意味着 b 现在引用了一个新的对象,而 a 仍然引用原来的对象。

    在这个例子中,ab 最初都引用相同的字符串------"Hello"。当我们执行 b += " World" 时,Python 创建了一个新的字符串对象"Hello World",并将 b 更新为指向这个新对象。a` 仍然指向原来的字符串对象,因此它的值不会发生改变。

    如果你想直接创建对象的副本,可以使用 copy 模块:

    python 复制代码
    import copy
    
    a = "Hello"
    b = copy.copy(a)  # 创建 a 的副本
    
    b += " World"  # 修改 b 的副本
    
    print(a)  # 输出: Hello   # a 仍然没有被修改
    print(b)  # 输出: Hello World

    强调: 理解 "引用" 的概念对于理解 Python 的内存管理至关重要,特别是对于后面学到的列表和字典等可变对象。

  4. 垃圾回收 当一个对象不再被任何变量引用时,Python 的垃圾回收机制会自动回收该对象所占用的内存。

    python 复制代码
    x = 10
    y = x
    del x         # 删除变量 x
    
    print(y)  # 输出: 10
    
    # 此时,整数对象 10 仍然存在,因为它仍然被 y 引用
    del y
    
    # 现在,整数对象 10 不再被任何变量引用,符合垃圾回收的条件,
    # Python 解释器会在适当的时候回收它所占用的内存。

    补充说明: del 语句用于删除变量的绑定,而不是删除对象本身。

5. 变量命名规则

  • 必须以字母或下划线开头:name_value
  • 后续字符可以是字母、数字或下划线:total_countuser2

  • 区分大小写:Ageage 是不同的变量

  • 避开关键字:不能使用 ifforwhile 等保留字

    python 复制代码
    # 合法命名示例
    user_name = "Alice"
    _private_data = 42
    MAX_VALUE = 100
    
    # 非法命名示例
    2nd_place = "Bob"    # 错误:以数字开头
    first-name = "Carol"  # 错误:包含连字符

    建议: 变量命名应具有描述性,提高代码可读性。推荐使用小写字母和下划线组合 (snake_case)。

相关推荐
Kier43 分钟前
基于YOLO实现一个智能条码识别
人工智能·python·ai编程
MarkGosling1 小时前
【语音合成】B 站开源 IndexTTS :声音克隆,吊打真人发音,断句精准度 98%
人工智能·python
alicelovesu1 小时前
Mac开发者噩梦终结者?实测三大工具,告别环境配置地狱!
python·node.js
站大爷IP3 小时前
Pandas时间数据处理:从基础到进阶的实战指南
python
智能砖头4 小时前
本地文档AI助手:基于LangChain和Qwen2.5的智能问答系统
人工智能·python
郭枫寅5 小时前
第二课 Python 注释与规范格式
python
郭枫寅5 小时前
第三课 Python中的简单数据类型
python
JavaEdge在掘金6 小时前
解决 Maven os.detected.classifier 报错:快速修复指南
python
HEY_FLYINGPIG8 小时前
【FLASK】FLASK应用中的多用户并行登录与加密
后端·python·flask