【python基础】1.python基础.
Python 语言基础
Python 对象和引用
一切皆对象
python3 中一切皆对象,每个对象由标识、类型、值组成。
- 标识用于唯一标识一个对象
- 类型决定了该对象的可取值范围和可执行的操作
- 值则是对象表示的数据
num = 123
print(type(num))
print(id(123))
print(num)
变量和引用
Python 中的对象是计算机内存中的一块区域。
为了引用对象,必须通过赋值操作,将对象的引用赋值给变量。
变量是一个符号,指向对象的引用,多个变量可以指向同一个对象。如果一个对象没有被引用,那么它就会被回收。
python 中变量不需要显式声明,但是必须赋值后才能引用,否则会报错
Python 是强类型语言,每个变量只支持该类型允许的操作,不同类型的变量不能混合使用
a = 123
print(id(a)) # 140719805056592
b = a
print(id(b)) # 140719805056592
a = 456
print(id(a)) # 140719805057360
变量的声明和赋值
声明
- 变量名只能包含字母、数字、下划线
- 变量名不能以数字开头
- 变量名不能是 Python 关键字
- 变量名区分大小写
- 以下划线开头的变量名有特殊含义,
_xxx:以单下划线开头的变量名,表示不能直接访问的类属性,需通过类提供的接口进行访问,不能用from xxx import *导入__xxx:以双下划线开头的变量名,表示类的私有成员,不能通过obj.__xxx访问__xxx__: 以双下划线开头和结尾的变量名,表示 Python 的内置变量,如__init__、__name__、__doc__等
Python 中没有常量的概念,但是可以通过约定俗成的方式来表示常量,如:
MAX_VALUE = 100。
赋值
=为赋值操作符,将右边的值赋给左边的变量- 链式赋值
a = b = c = 123 - 复合赋值
a += 1等价于a = a + 1 - 解包赋值
将系列数据解包赋值给多个变量
a, b, c = 1, 2, 3
print(a, b, c) # 1 2 3
# 如果只需要其中的某几个值,可以用 _ 代替不需要的值
a, _, c = 1, 2, 3
print(a, c) # 1 3
# 解包赋值时,等号右边的值必须是一个可迭代对象
a, b, c = [1, 2, 3]
print(a, b, c) # 1 2 3
a,b = 1 # ValueError: too many values to unpack (expected 2)
对象的比较
is比较两个对象的标识是否相同,即是否引用同一个对象==比较两个对象的值是否相等
a = 123
b = 123
print(a is b) # True
print(a == b) # True
a = 123
b = 123.0
print(a is b) # False
print(a == b) # True
对象的变化
不可变对象:对象所包含的值不允许被改变,如:int、float、bool、str、tuple、frozenset、bytes。
可变对象:对象所包含的值允许被改变,如:list、dict、set。
a = 123
print(id(a)) # 140719805056592
a = 456
print(id(a)) # 140719805057360 # a 指向了新的对象
a = 123
print(id(a)) # 140719805056592 # a 又指向了原来的对象
lst = [1, 2, 3]
print(id(lst)) # 140719805056592
lst.append(4)
print(id(lst)) # 140719805056592
Python 语句
简单语句
- 表达式语句
- 赋值语句
assert语句:assert <expr>, <expr>, 如果<expr>为真,则什么都不做,否则抛出AssertionError异常,异常信息为<expr>的值pass语句: 什么都不做,只是一个占位符,用于在语法上需要语句,但程序什么都不做的情况del语句: 用于删除对象引用,如:del a,删除变量a的引用,如果a是最后一个引用,那么对象就会被回收return语句: 用于从函数中返回,如果没有指定返回值,则返回Noneyield语句: 用于从生成器函数中返回,返回一个值,并暂停生成器函数的执行
def gen():
yield 1
yield 2
yield 3
g = gen()
print(next(g)) # 1
print(next(g)) # 2
print(next(g)) # 3
print(next(g)) # StopIteration
raise语句: 用于抛出异常,如:raise ValueError('invalid value')break语句continue语句import语句: 用于导入模块,如:import osglobal语句: 用于声明变量为全局变量,如:global anonlocal语句: 用于声明变量为非局部变量,如:nonlocal a
def outer():
a = 1
def inner():
# nonlocal 表示 a 不是局部变量,而是外部函数的变量
nonlocal a
a = 2
inner()
print(a) # 2
复合语句
if语句while语句for语句try语句with语句
with语句用于简化try/finally模式,如:
等价于with open('test.txt') as f: for line in f: print(line)f = open('test.txt') try: for line in f: print(line) finally: f.close()def语句class语句
书写规则
- 每个语句独占一行
- 反斜杠
\用于连接多行语句 - 分号
;用于在一行中指定多个语句
Python 程序流程控制
顺序结构
顺序结构是程序中最简单的结构,程序按顺序执行,不会有任何分支和循环。
选择结构
选择结构用于根据条件选择执行不同的代码,Python 中的选择结构有两种形式:if 语句和三元表达式。
if 语句
if 语句的语法格式如下:
if <expr>:
<statement>
elif <expr>:
<statement>
else:
<statement>
<expr> 是一个表达式,如果表达式的值为真,则执行 <statement>,否则不执行。
三元表达式
三元表达式的语法格式如下:
<expr1> if <expr2> else <expr3>
如果 <expr2> 的值为真,则返回 <expr1> 的值,否则返回 <expr3> 的值。
循环结构
循环结构用于重复执行一段代码,Python 中的循环结构有两种形式:while 循环和 for 循环。
可迭代对象
可迭代对象是指实现了 __iter__ 方法的对象,如:list、tuple、dict、set、str、bytes、range、generator 等。
# range 是一个可迭代对象
for i in range(10):
print(i)
# 从start开始,到stop结束,步长为step
for i in range(1, 10, 2):
print(i)
enumerate 函数
range 函数只能生成等差数列,如果需要遍历一个可迭代对象,可以使用 enumerate 函数,它会将可迭代对象的每个元素和元素的下标组成一个元组,然后返回一个可迭代对象。
lst = ['a', 'b', 'c']
for i, v in enumerate(lst):
print(i, v)
map 函数
map(func,seq1[,seq2,...]) 将func作用于seq中的每一个元素,结果作为可迭代对象返回。
list(map(abs, [-1, -2, -3])) # [1, 2, 3]
# 内联函数
list(map(lambda x: x * x, [1, 2, 3])) # [1, 4, 9]

浙公网安备 33010602011771号