2.python变量

理解,我将提供更详细和深入的解释,包括一些进阶概念和实际应用的例子。我们将从变量类型开始,逐步深入到每种数据类型的特性、操作方法以及它们在编程中的应用场景。

文章目录

      • 1. 变量赋值与作用域
        • 变量赋值
        • 变量作用域
      • 2. 标准数据类型
        • Numbers(数字)
          • 整数 (`int`)
          • 浮点数 (`float`)
          • 复数 (`complex`)
        • String(字符串)
          • 基本操作
          • 字符串方法
          • 字符串格式化
        • List(列表)
          • 基本操作
          • 列表方法
        • Tuple(元组)
          • 基本操作
          • 元组方法
        • Dictionary(字典)
          • 基本操作
          • 字典方法
      • 3. 数据类型转换
        • 基本数据类型转换
        • 复杂数据类型转换
        • 数字系统转换
      • 4. 进阶概念
        • 不可变 vs 可变类型
        • 内存管理和垃圾回收
        • 类型提示(Type Hints)
      • 总结

1. 变量赋值与作用域

变量赋值

Python 中的变量赋值非常灵活,支持多种赋值方式:

  • 单个变量赋值:最简单的形式。
  • 多个变量赋值:可以同时给多个变量赋相同的值或不同的值。
  • 解包赋值:可以从序列中直接解包赋值给多个变量。
# 单个变量赋值
x = 10# 多个变量赋值
a = b = c = 1
p, q, r = "apple", "banana", "cherry"# 解包赋值
coordinates = (3, 4)
x, y = coordinates
变量作用域

Python 中的变量作用域分为全局作用域(global)和局部作用域(local)。函数内部定义的变量默认为局部变量,而函数外部定义的变量为全局变量。可以使用 global 关键字在函数内部访问和修改全局变量。

# 全局变量
global_var = "I am global"def my_function():# 局部变量local_var = "I am local"print(local_var)def modify_global():global global_varglobal_var = "Modified by function"print(global_var)  # 输出: I am global
my_function()      # 输出: I am local
modify_global()
print(global_var)  # 输出: Modified by function

2. 标准数据类型

Numbers(数字)
整数 (int)

整数是没有小数部分的数值。Python 3 中的整数没有大小限制,取决于可用的内存。

# 整数
x = 42
y = -1000
z = 0x1A  # 十六进制表示
w = 0o755 # 八进制表示
v = 0b1101 # 二进制表示print(x, y, z, w, v)  # 输出: 42 -1000 26 493 13
浮点数 (float)

浮点数是带有小数部分的数值,通常用于表示实数。

# 浮点数
pi = 3.14159
e = 2.71828
inf = float('inf')  # 正无穷大
ninf = float('-inf')  # 负无穷大
nan = float('nan')  # 非数字print(pi, e, inf, ninf, nan)  # 输出: 3.14159 2.71828 inf -inf nan
复数 (complex)

复数由实部和虚部组成,可以用 a + bjcomplex(a, b) 表示。

# 复数
c = 3 + 4j
d = complex(1, 2)print(c, d)  # 输出: (3+4j) (1+2j)
print(c.real, c.imag)  # 输出: 3.0 4.0
String(字符串)

字符串是由字符组成的不可变序列。Python 支持多种字符串操作,如切片、拼接、格式化等。

基本操作
  • 创建字符串:可以用单引号、双引号或三引号。
  • 字符串切片:使用 [start:end:step] 语法。
  • 字符串拼接:使用 + 操作符。
  • 字符串重复:使用 * 操作符。
# 创建字符串
s1 = 'Hello'
s2 = "World"
s3 = '''This is a
multi-line string'''# 字符串切片
s = "Python"
print(s[0])  # 输出: P
print(s[1:4])  # 输出: yth
print(s[-3:])  # 输出: hon# 字符串拼接
greeting = s1 + " " + s2
print(greeting)  # 输出: Hello World# 字符串重复
repeated = "abc" * 3
print(repeated)  # 输出: abcabcabc
字符串方法

Python 提供了许多内置的字符串方法,用于处理和操作字符串。

# 字符串方法
text = "hello world"
print(text.capitalize())  # 输出: Hello world
print(text.upper())       # 输出: HELLO WORLD
print(text.replace("world", "Python"))  # 输出: hello Python
print("hello" in text)    # 输出: True
print(len(text))         # 输出: 11
字符串格式化

Python 支持多种字符串格式化方式,如 % 操作符、str.format() 方法和 f-string(Python 3.6+)。

# % 操作符
name = "Alice"
age = 30
formatted = "My name is %s and I am %d years old." % (name, age)
print(formatted)  # 输出: My name is Alice and I am 30 years old.# str.format()
formatted = "My name is {} and I am {} years old.".format(name, age)
print(formatted)  # 输出: My name is Alice and I am 30 years old.# f-string (Python 3.6+)
formatted = f"My name is {name} and I am {age} years old."
print(formatted)  # 输出: My name is Alice and I am 30 years old.
List(列表)

列表是有序且可变的集合,允许重复元素。列表用方括号 [] 表示。

基本操作
  • 创建列表:使用方括号或 list() 构造函数。
  • 访问元素:通过索引访问列表中的元素。
  • 切片:使用 [start:end:step] 语法。
  • 修改元素:通过索引修改列表中的元素。
  • 添加元素:使用 append()insert()extend() 方法。
  • 删除元素:使用 remove()pop()del 语句。
# 创建列表
fruits = ['apple', 'banana', 'cherry']
empty_list = list()# 访问元素
print(fruits[0])  # 输出: apple
print(fruits[-1])  # 输出: cherry# 切片
print(fruits[1:3])  # 输出: ['banana', 'cherry']# 修改元素
fruits[1] = 'blueberry'
print(fruits)  # 输出: ['apple', 'blueberry', 'cherry']# 添加元素
fruits.append('orange')
fruits.insert(1, 'grape')
fruits.extend(['mango', 'kiwi'])
print(fruits)  # 输出: ['apple', 'grape', 'blueberry', 'cherry', 'orange', 'mango', 'kiwi']# 删除元素
fruits.remove('grape')
popped = fruits.pop()  # 弹出最后一个元素
del fruits[1]
print(fruits)  # 输出: ['apple', 'cherry', 'orange', 'mango']
列表方法

Python 提供了许多内置的列表方法,用于操作和管理列表。

# 列表方法
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]# 排序
numbers.sort()
print(numbers)  # 输出: [1, 1, 2, 3, 4, 5, 5, 6, 9]# 反转
numbers.reverse()
print(numbers)  # 输出: [9, 6, 5, 5, 4, 3, 2, 1, 1]# 查找元素
index = numbers.index(5)
count = numbers.count(5)
print(index, count)  # 输出: 2 2# 清空列表
numbers.clear()
print(numbers)  # 输出: []
Tuple(元组)

元组是有序且不可变的集合,不允许修改其元素。元组用圆括号 () 表示。

基本操作
  • 创建元组:使用圆括号或 tuple() 构造函数。
  • 访问元素:通过索引访问元组中的元素。
  • 切片:使用 [start:end:step] 语法。
  • 解包元组:可以将元组中的元素解包赋值给多个变量。
# 创建元组
point = (3, 4)
empty_tuple = tuple()# 访问元素
print(point[0])  # 输出: 3
print(point[-1])  # 输出: 4# 切片
coordinates = (1, 2, 3, 4, 5)
print(coordinates[1:4])  # 输出: (2, 3, 4)# 解包元组
x, y = point
print(x, y)  # 输出: 3 4
元组方法

由于元组是不可变的,因此提供的方法较少,主要包括 count()index()

# 元组方法
t = (1, 2, 2, 3, 4, 2)# 查找元素
index = t.index(2)
count = t.count(2)
print(index, count)  # 输出: 1 3
Dictionary(字典)

字典是无序的键值对集合,键必须是唯一的且不可变。字典用花括号 {} 表示。

基本操作
  • 创建字典:使用花括号或 dict() 构造函数。
  • 访问元素:通过键访问字典中的值。
  • 修改元素:通过键修改字典中的值。
  • 添加元素:通过键添加新的键值对。
  • 删除元素:使用 del 语句或 pop() 方法。
# 创建字典
person = {'name': 'Alice','age': 30,'city': 'New York'
}
empty_dict = dict()# 访问元素
print(person['name'])  # 输出: Alice
print(person.get('age'))  # 输出: 30# 修改元素
person['age'] = 31
print(person)  # 输出: {'name': 'Alice', 'age': 31, 'city': 'New York'}# 添加元素
person['country'] = 'USA'
print(person)  # 输出: {'name': 'Alice', 'age': 31, 'city': 'New York', 'country': 'USA'}# 删除元素
del person['city']
removed_value = person.pop('country')
print(person)  # 输出: {'name': 'Alice', 'age': 31}
字典方法

Python 提供了许多内置的字典方法,用于操作和管理字典。

# 字典方法
person = {'name': 'Alice','age': 30,'city': 'New York'
}# 获取所有键
keys = person.keys()
print(keys)  # 输出: dict_keys(['name', 'age', 'city'])# 获取所有值
values = person.values()
print(values)  # 输出: dict_values(['Alice', 30, 'New York'])# 获取所有键值对
items = person.items()
print(items)  # 输出: dict_items([('name', 'Alice'), ('age', 30), ('city', 'New York')])# 更新字典
person.update({'age': 31, 'country': 'USA'})
print(person)  # 输出: {'name': 'Alice', 'age': 31, 'city': 'New York', 'country': 'USA'}# 清空字典
person.clear()
print(person)  # 输出: {}

3. 数据类型转换

Python 提供了多种内置函数来执行不同类型之间的转换。这些函数不仅可以用于基本数据类型之间的转换,还可以用于复杂数据结构之间的转换。

基本数据类型转换
  • int():将其他类型转换为整数。
  • float():将其他类型转换为浮点数。
  • str():将其他类型转换为字符串。
  • bool():将其他类型转换为布尔值。
# 基本数据类型转换
int_value = int(3.5)        # 输出: 3
float_value = float("12.34")  # 输出: 12.34
str_value = str(42)          # 输出: '42'
bool_value = bool(0)         # 输出: False
复杂数据类型转换
  • list():将其他类型转换为列表。
  • tuple():将其他类型转换为元组。
  • set():将其他类型转换为集合。
  • dict():将其他类型转换为字典。
# 复杂数据类型转换
list_from_string = list("hello")
print(list_from_string)  # 输出: ['h', 'e', 'l', 'l', 'o']tuple_from_list = tuple([1, 2, 3])
print(tuple_from_list)  # 输出: (1, 2, 3)set_from_list = set([1, 2, 2, 3, 4])
print(set_from_list)  # 输出: {1, 2, 3, 4}dict_from_tuples = dict([('name', 'Alice'), ('age', 30)])
print(dict_from_tuples)  # 输出: {'name': 'Alice', 'age': 30}
数字系统转换
  • hex():将整数转换为十六进制字符串。
  • oct():将整数转换为八进制字符串。
  • bin():将整数转换为二进制字符串。
# 数字系统转换
hex_value = hex(255)  # 输出: '0xff'
oct_value = oct(64)   # 输出: '0o100'
bin_value = bin(13)   # 输出: '0b1101'

4. 进阶概念

不可变 vs 可变类型
  • 不可变类型:一旦创建后,其内容不能被修改。例如,intfloatstrtuple 等。
  • 可变类型:可以在创建后修改其内容。例如,listdictset 等。
# 不可变类型
s = "hello"
s += " world"  # 实际上创建了一个新的字符串对象
print(s)  # 输出: hello world# 可变类型
l = [1, 2, 3]
l.append(4)
print(l)  # 输出: [1, 2, 3, 4]
内存管理和垃圾回收

Python 使用自动内存管理机制,包括引用计数和垃圾回收器(GC)。当一个对象的引用计数为零时,它会被自动释放。垃圾回收器还会处理循环引用的情况。

import gc# 启用垃圾回收
gc.enable()# 手动触发垃圾回收
gc.collect()
类型提示(Type Hints)

Python 3.5 引入了类型提示功能,允许你在代码中明确指定变量、函数参数和返回值的类型。这有助于提高代码的可读性和维护性,并且可以与静态分析工具结合使用。

from typing import List, Dict, Tupledef greet(name: str) -> str:return f"Hello, {name}!"def process_data(data: List[int]) -> Dict[str, int]:return {"min": min(data), "max": max(data)}def get_coordinates() -> Tuple[int, int]:return (3, 4)

总结

通过上述详细的解释,我们不仅涵盖了 Python 中的基本变量类型和数据结构,还深入探讨了它们的特性和操作方法。此外,我们还介绍了进阶概念,如不可变与可变类型、内存管理、垃圾回收和类型提示。这些知识将帮助你更好地理解和使用 Python 编程语言,编写高效、可靠的代码。

如果你有任何具体问题或需要进一步的解释,请随时告诉我!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/64253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux shell的七大功能 --- history

1.直接输入“history” 这个命令可以显示出曾经使用过的命令(最近时间的500条) history 2.“history”命令也可以搭配其他命令一起使用。 例:history | grep "vim",找出所有包含“vim”的记录; 也可以搭配…

【PHP】部署和发布PHP网站到IIS服务器

欢迎来到《小5讲堂》 这是《PHP》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 前言安装PHP稳定版本线程安全版解压使用 PHP配置配置文件扩展文件路径…

解锁SQL无限可能:如何利用HiveSQL实现0-1背包问题?

目录 1. 创建物品信息表 2. 设置背包容量(通过 Hive 变量设置) 3. 创建动态规划表并初始化 4. 动态规划填充表格过程

Parcel 插件开发指南:如何为 Parcel 创建自定义插件

前言 Parcel 是一个非常强大的打包工具,适用于快速构建现代 Web 应用程序。它默认提供了很多开箱即用的功能,但在某些场景下,我们可能需要自定义一些功能来满足特定需求。这个时候,编写自定义插件就显得尤为重要。本文将通过一个…

scala隐式转换

概念: 在Scala编程语言中,隐式转换是一种强大的功能,它允许程序在需要时自动转换数据类型或增强对象功能。这种转换通常是通过定义一个标记为implicit的函数来实现的,这个函数能够将一种类型转换为另一种类型。隐式转换的使用可以…

腾讯云COS跨域访问CORS配置

腾讯云COS跨域访问CORS配置方法如下,参考以下截图: 参考文章: 跨域及CORS-Nginx配置CORS

mac删除程序坞(Dock)中“无法打开的程序“

参考: Mac删除软件之后图标还在怎么办?https://blog.csdn.net/weixin_46500474/article/details/124284161Mac程序坞中软件删除出现残留“?”图标无法删除解决方法: https://blog.csdn.net/shenwenhao1990/article/details/12865…

EfficientNet与复合缩放理论(Compound Scaling Theory) 详解(MATLAB)

1.EfficientNet网络与模型复合缩放 1.1 EfficientNet网络简介 1.1.1 提出背景、动机与过程 EfficientNet是一种高效的卷积神经网络(CNN),由Google的研究团队Tan等人在2019年提出。EfficientNet的设计目标是提高网络的性能,同时减…

vue2 配置 mock.js 模拟后端数据

安装 mockj 首先确保你有一个 vue 2 项目,如果没有,可以用 Vue CLI 创建一个: vue create vue-mock-demo 开始安装 Mock.js npm install mockjs --save-dev 创建 Mock 配置文件 在项目的 src 目录下新建一个文件夹 mock,并在其中创…

python:用 sklearn SVM 构建分类模型,并评价

编写 test_sklearn_5.py 如下 # -*- coding: utf-8 -*- """ 使用 sklearn 估计器构建分类模型,并评价 """ import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.svm import SVC from sk…

Java多线程与线程池技术详解(十)

拥有梦想,即拥有了生命的火种。 梦想是一座高山,攀爬起来虽然艰辛,但一旦到达顶峰,你的努力就将被铭记于人心。 梦想是一个拼图,每一次努力都是一块拼图,最终汇成一个完整的梦想。 梦想是你的信念&#xff…

后端-redis在springboot项目中的使用步骤

redis在springboot项目中的使用场景 如果再创建一张包含状态的表,里面就有两个字段一个id,一个状态,太浪费,那就使用redis存储, 设置营业状态打烊还是营业中

Elasticsearch之mapping属性设置讲解与实战

Elasticsearch之Mapping属性设置讲解与实战 1. 引言 1.1 博客目的与读者定位 本篇技术博客旨在为Elasticsearch的中级用户及开发者提供一个深入浅出的Mapping属性设置指南。无论您是正在构建新的搜索应用,还是希望优化现有Elasticsearch集群的性能,本文都将为您提供详尽的…

解读Modbus TCP指令

解读Modbus TCP指令:[0x01, 0x00, 0x00, 0x00, 0x04, 0x06, 0x01, 0x10, 0x00, 0xC8, 0x00, 0x02, 0x04, 0x00, 0x01, 0x00, 0x01] 在Modbus TCP通信中,数据以字节流的形式传输。理解和解析这些字节对于调试和开发至关重要。本文将详细解析给定的Modbus…

【鸿蒙实战开发】数据的下拉刷新与上拉加载

本章介绍 本章主要介绍 ArkUI 开发中最常用的场景下拉刷新, 上拉加载,在本章中介绍的内容在实际开发过程当中会高频的使用,所以同学们要牢记本章的内容。下面就让我们开始今天的讲解吧! List 组件 在 ArkUI 中List容器组件也可以实现数据滚动的效果&a…

ElasticSearch 常见故障解析与修复秘籍

文章目录 一、ElasticSearch启动服务提示无法使用root用户二、ElasticSearch启动提示进程可拥有的虚拟内存少三、ElasticSearch提示用户拥有的可创建文件描述符太少四、ElasticSearch集群yellow状态分析五、ElasticSearch节点磁盘使用率过高,read_only状态问题解决六…

Motionface RTASR 离线实时语音识别直播字幕使用教程

软件使用场景: 直播、视频会议、课堂教学等需要实时字幕的场景。 1:系统要求 软件运行支持32位/64位windows 10/11系统,其他硬件要求无,无显卡也能实时识别字幕。 2:下载安装 链接:百度网盘 请输入提取码 提取码&#…

Https身份鉴权(小迪网络安全笔记~

附:完整笔记目录~ ps:本人小白,笔记均在个人理解基础上整理,若有错误欢迎指正! 5.2 Https&身份鉴权 引子:上一篇主要对Http数据包结构、内容做了介绍,本篇则聊聊Https、身份鉴权等技术。 …

Linux 中的 mkdir 命令:深入解析

在 Linux 系统中,mkdir 命令用于创建目录。它是文件系统管理中最基础的命令之一,广泛应用于日常操作和系统管理中。本文将深入探讨 mkdir 命令的功能、使用场景、高级技巧,并结合 GNU Coreutils 的源码进行详细分析。 1. mkdir 命令的基本用法…

【实验】【H3CNE邓方鸣】交换机端口安全实验+2024.12.11

实验来源:邓方鸣交换机端口安全实验 软件下载: 华三虚拟实验室: 华三虚拟实验室下载 wireshark:wireshark SecureCRT v8.7 版本: CRT下载分享与破解 文章目录 dot1x 开启802.1X身份验证 开启802.1X身份验证,需要在系统视图和接口视…