python内存管理 变量无需指定类型_Python基础: 标示符、内存管理

了解基本的Python语法,基本编程风格、标示符、变量、关键字、内存管理。

基本规则

语句和语法

Python语句中的一些基本规则和特殊字符:

#: 表示之后的字符为Python的注释

\n: 换行符,标准的行分隔符(通常一个语句一行)

\: 反斜扛,继续上一行,有时候句子太长了就用反斜扛来连着

;: 分号,将两个语句连接在一行中,句子短,时候适用

:: 冒号,将代码块的头部和区块体分开

语句(代码块)用缩进块来体现,而不像其它语言中用{}来体现

不同缩进深度,表示不同的代码块

Python文件以模块的形式组织,用import可以导入模块。

变量赋值

Python中,也是使用=做为赋值操作符。

name = "编程列车"

age = 20

x = 1

# 链式赋值

y = x = x + age

print(x,y)

# 21,21

增量赋值

增量赋值一般有:+=,-=,*=,/=,%=,<<=,>>=,^=,\=.

注意中间不要有空格。

x = 123

x += 1 #相当于 x = x + 1

y = 2

y *= 2

print(x,y) #(124,4)

多重赋值: x = y = z = "code"

多元赋值:

x,y,z = 1,'ddd',99: x = 1, y = "ddd",z = 99

x,y = ("name","age"): x = "name", y="age"

x,y = y,x: xy互换

标示符

标示符是计算机语言中允许作为名字的有效字符串集合。其中,有一部分是关键字,构成语言的标示符。这样的标示符是保留字,不能用于其他的用途,否则会引起错误,比如把True = 0用了True这个关键字,其他地方程序就可能出现异常(SyntaxError)。

合法的标示符:

第一个字符必须是字母或者下划线_;

剩下的可以是:字母,数字,下划线_;

大小写敏感的,Abc 和 abc 可不是同一个东西.

不能是数字开头哦!

关键字

关键字有很多,一般是在编程语言使用过程中,慢慢就会记住很多了。比如:

and,or,not

def,if,elif,else

while,for,in,pass

import, from,as

try,except

print,help,None,del,dir

lambda,raise,return,break,continue

内建的

除了关键字外,Python还可以在任何一级代码中使用内建(built-in)的名字集合。

虽然built-in不是关键字,但是应该把它当做"系统保留字",不做他用。

专用下划线标示符

_XXX: 不用from module import *导入的,相当于是模块内才用的

_XXX_: 系统定义名字

__XXX: 类中的私有变量

基本风格

注释、文档(__doc__)、缩进、选择标示符名称、风格指南,可以参考PEP8.

养成好的编程规范,效率上、代码质量上,都会有很大的提升。

内存管理

在python中:

变量无需实现声明;

变量无需指定类型;

程序员不用关心内存管理;

变量名会被"回收";

del 语句能够直接师傅资源:del obj这样obj就被释放了。

Python中,无需变量声明语句,变量名在第一次赋值时自动声明。

变量如果没赋值,如果调用就会报错。

>>> codelieche

Traceback (most recent call last):

File "", line 1, in

NameError: name 'codelieche' is not defined

>>> codelieche = 1

>>> codelieche

1

python还是动态类型的,比如:a = 123,现在a是int类型的,如果吧a = "123"这样a的类型就变成字符串型了。而在其它语言,比如C,java中语言声明了类型后,赋值不是这个类型的,就会报错。而Python就会自动变化类型。是不是觉得很酷,python酷炫的内容太多了,是的:人生苦短,我用Python.

引用计数

要保持追踪内存中的对象,Python使用了引用计数这一技术。也就是说Python内部记录着所有使用中的对象各有多少次引用。内部跟踪变量,被引用一次,计数就加一次。对每个对象各有多少个引用,简称引用计数器。

对象创建的时候,就创建了一个引用计数,这个对象不再需要的时候,也就是引用计数变为0的时候,它就会被垃圾回收[当然不是100%,立刻]。

判断b是不是a的引用,可以用a is b如果为True就表示是引用。

is其实是判断a,b的内存地址是否相等。查看内存地址用id(obj).

示例:

x = "codelieche"

y = x # "codelieche"这个字符串,x其实也是指向它的 引用加一次

z = y # 再 + 1

print(id(z)) #4538673648

# 这个数字是内存地址什么的,每次重新执行都是不同的

print(id(x)) # 4538673648

# z is x True

z = "new" # z不指向x了,x引用就减一次了

del y # 删除y,引用 - 1

x = 1 # x重新指向了,"codelieche" 引用又减一次

>>> id("codelieche")

4536726272

>>> x = "codelieche"

>>> y = x

>>> z = x

>>> id(x)

4536726272

>>> id(z)

4536726272

>>> z is x

True

>>> z = "new"

>>> id(z)

4535270576

>>> del y

>>> z is x

False

>>> x = 1

>>> id(x)

140237623834888

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值