Python基础
基础知识介绍
# -*- coding: utf-8 -*-
print '''fadsfsadf
fdsafsd fgsga gagdas''' # 可以打印
a,b,c,d=(1,2, # 括号换行,多元赋值
3,4)
print b
if (a==1) and \
(b==1):
pass
import sys; x='foo';sys.stdout.write(x + '\n' + x)
x=y=z=1 #多重赋值
内存管理
变量无需事先声明
变量在第一次赋值时自动声明,变量只有在创建和赋值后才能被使用。
变量无需指定类型
对象的类型和内存占用都是运行时确定的。尽管代码被编译成字节码,但是python仍然是一种解释型语言。
不用关心内存管理
python解释器承担了内存管理的复杂任务
变量名会被回收
del 语句能够直接释放资源
引用计数
python内部记录着所有使用中的对象各有多少引用;
一个内部跟踪变量,称为一个引用计数器;
每个对象各有多少引用,称为引用计数;
当对象被创建时,就创建了一个引用计数,当这个对象不再需要时,也就是说这个对象的引用计数为0时,被垃圾回收。
1. 增加引用计数
增加引用计数的场景
x=3.14 # 对象被创建
y=x # 别名被创建
foobar(x) # 被作为参数传递给函数
mlist=[123,x] # 成为容器对象的一个新元素
- 减少引用计数
# 一个本地引用离开其作用范围
del y # 对象的别名被显示销毁
x=123 # 对象的别名被付给其他对象
foo ='xyz'
bar=foo
foo=1234
mlist.remove(x) # 对象从一个窗口对象中移除
del x #窗口对象本身被销毁
- 垃圾收集
不再使用的内存会被一种称为垃圾收集的机制释放,解释器跟踪对象的引用计数,垃圾收集器负责释放内存。
垃圾收集器会寻找引用计数为0的对象和被分配的总量很大的对象。