1、变量
用于程序运行过程中临时存储数据(临时存储在内存中)
例:X = 123
1)变量的存储和回收
第一个 x = 123 中的值没有被变量引用会自动回收
import sys
x = 123
x = "ABC"
print(x)
# 输出:ABC
x1 = 123
x2 = "ABC"
# 使用 getsizeof 函数查看变量内存大小
print(sys.getsizeof(x1)) # 输出:28
print(sys.getsizeof(x2)) # 输出:52
为什么不直接把 x = 123 里面的值改成 456,而是要将 x = 123 回收,再重新将 456 赋值给变量 x 呢?
- 更改x=123的值会带来额外的开销
- 比较新申请(x = “ABC”)的内存空间和原有(x = 123)内存空间的大小,原来的大了要释放,原来的小了要增加。
- 多线程访问时要保证修改的内容不会被别的线程并行修改。避免引入更复杂的互斥机制(操作系统进程相关知识)。
2)变量的数据类型由所引用的值决定
python 是动态类型语言,变量的数据类型在运行时动态更改,不需要在申明变量时明确指定。
x = 123 # x 是一个整数类型
y = 123.0 # y 是一个浮点类型
z = "python" # z 是一个字符串类型
print(type(x))
print(type(y))
print(type(z))
# 输出:
# <class 'int'>
# <class 'float'>
# <class 'str'>
x1 = int(123.0) # 申明x1为整数类型
y1 = float(123) # 申明y1为浮点类型
z1 = str("456") # 申明z1为字符串类型
print(type(x1))
print(type(y1))
print(type(z1))
# 输出
# <class 'int'>
# <class 'float'>
# <class 'str'>
print(abc) # 没有被赋值的变量会报错NameError
# NameError: name 'abc' is not defined
3)字符串中使用变量:
在字符串中插入变量的值时,可以使用 f-strings。用法:f"{ 变量名 }"
# 例如
x = 123
print(f"{x}: {x} 是变量x的值")
_#python 3.6以上版本 _
待学习:
- python 回收机制
- python 并发与多线程
2、字符串:字符串用于处理文本数据,是python中最常用的数据类型之一
例如:
‘123’
“123”
‘’‘123’‘’ 或 “”“123"”"
字符串的基本操作
成员运算 | x in s | 如果 s 中的某项等于 x,那么结果为 Ture,否则为 False |
---|---|---|
x not in s | 如果 s 中的某项等于 x,那么结果为 False,否则为 True | |
连接运算 | s + t | s 与 t 相拼接 |
s * t 或 n * s | 相当于 s 与自身进行 n 次拼接 | |
切片运算 | s[i] | s 的第 i 项,起始为 0 |
s[i:j] | s 从 i 到 j 的切片 | |
s[i:j:k] | s 从 i 到 j 步长为 k 的切换 |
字符串的常用方法
字符串的所有方法:字符串的方法
str.count(sub[, start[, end]])
- 返回子字符串 sub 在 [start, end] 范围内非常重叠出现的次数
str.isalnum()
- 如果字符串中的所有字符都是字母或数字,且至少有一个字符,那么返回 True,否则返回 False
str.isalpha()
- 如果字符串中的所有字符都是字母,且至少有一个字符,那么返回 True,否则返回 False
str.join(iterable)
- 返回一个由 iterable 中的字符串拼接而成的字符串
str.split(sep=None, maxsplit=-1)
- 返回一个由字符串内单词组成的列表,使用 sep 作为分隔字符串
str.startswith(prefix[, start[, end]])
- 如果字符串以指定的 prefix 开始,那么返回 True,否则返回 False
字符串与数字使用:
- python 的比较运算符是区分大小写
- 字符串中的每个字符都有一个ASCII 值(美国信息交换标准代码)。例如,G 的 ASCII 值为 71,而 g 的值为 103。当进行比较时,g 会比 G 大。
- python 比较字符串是从左到右挨个字符串比较
- python 不同数据类型之间无法相互操作
print(100 + 200)
# 300
print("100" + "200")
# 100200
print(456 > 1234)
# False
print("456" > "1234")
# True 因为字符串的比较是从左到右挨个字符比较,先对比 4(ASCII值是52) 和 1(ASCII值是49),再对比5 和 2.
# 而且是按照ASCII值进行比较的,
print(len("456") > len("1234"))
# False
print(123 + "456")
# 不同数据类型之间无法相互操作
# Traceback (most recent call last):
# File "/Users/apple/Desktop/zero-basics-python-master/zero-basics-python/python/01.py", line 23, in <module>
# num6 = 123 + "456"
# ~~~~^~~~~~~
# TypeError: unsupported operand type(s) for +: 'int' and 'str'
print(123 + int("1234"))
print("ABC" > "ABD" ) # False
print("ABC" > 123 )
# Traceback (most recent call last):
# File "/Users/apple/Desktop/zero-basics-python-master/zero-basics-python/python/01.py", line 40, in <module>
# print("ABC" > 123 )
# ^^^^^^^^^^^
# TypeError: '>' not supported between instances of 'str' and 'int'
print(123.0 > 123 ) # False
print("123.0" > "123") # True
print("Hello" != "hello") # True
print("Hello" == "hello") # False
print("Hello" > "hello") # False
print("Hello" < "hello") # True
3、数字类型 — 整数(int)、浮点数(float)、复数(complex)
数字类型的常见运算
数字类型的强制转换
- python是强类型编程语言(要自己指定要所使用的类型)
- 使用 type() 函数可以得知对象的类型。例如:
- int()、float() 函数可以进行数字类型之间的转换
- str() 函数能够将数字转换为字符串
- int() 函数可以将只含有整数的字符串转换为整数,否则报错
4、内置数字类型
常见数据类型
数据类型:int、float、complex(复数)
文本类型:str
序列类型:list、tuple(元组)、range
映射类型:dict
list常用内置函数
详细描述参考官方文档
list_demo = ['a', 'b', 'c', 'd', 'e', ['f','g']]
print(type(list_demo)) # 查看变量类型
print(list_demo)
# <class 'list'>
# ['a', 'b', 'c', 'd', 'e', ['f', 'g']]
list_demo.insert(0,"first") # 在第0的位置插入一个first字符串
print(list_demo)
# ['first', 'a', 'b', 'c', 'd', 'e', ['f', 'g']]
list_demo.insert(-1,"last") # 在-1的位置插入一个 last
print(list_demo)
# ['first', 'a', 'b', 'c', 'd', 'e', 'last', ['f', 'g']]
list_demo.append("last_one") # 将last_one 添加到序列的末尾
print(list_demo)
# ['first', 'a', 'b', 'c', 'd', 'e', 'last', ['f', 'g'], 'last_one']
list_demo.extend("last_one") # 或 list_demo += last_one。 用last_one的内容扩展 last_demo
# list_demo += "last_one"
print(list_demo)
# ['first', 'a', 'b', 'c', 'd', 'e', 'last', ['f', 'g'], 'last_one', 'l', 'a', 's', 't', '_', 'o', 'n', 'e']
list_demo.remove("last_one") # 删除 list_demo 中的 last_one
print(list_demo)
# ['first', 'a', 'b', 'c', 'd', 'e', 'last', ['f', 'g'], 'l', 'a', 's', 't', '_', 'o', 'n', 'e']
# list_demo2 = []
result = list_demo.pop(0) # 提取在0位置上的项,并将其从中移除。如果位置为空会返回错误 IndexError: pop from empty list
print(f"list is {list_demo}")
print(f"result is {result}")
# list is ['a', 'b', 'c', 'd', 'e', 'last', ['f', 'g'], 'l', 'a', 's', 't', '_', 'o', 'n', 'e']
# result is first
tuple(元组)常用内置函数
color = ('r', 'g', 'b', 'g', 'b', 'b') # tuple
new_color = len(color) # len 返回集合中元素数量
print(new_color)
# 6
color = ('r', 'g', 'b', 'g', 'b', 'b') # tuple
new_color = set(color) # set 创建一个无序不重复元素集。
print(new_color)
# {'r', 'g', 'b'}
new_color_2 = tuple(new_color) #tuple 将列表转换成元组
print(new_color_2)
# ('r', 'g', 'b')