1. 变量的赋值
var1 = "kk" #表示变量值在内存中开辟了一小块空间,并把值存入,变量名只是指向值所存入的空间地址??
var2 = var1 #指向var1所指向的地址
var1 = "dd" #表示变量重新指向另一个空间地址
print(var1,var2)
根据程序顺序执行的原理,var1=dd; var2=kk
2. 内存回收机制
在c语言里,会手动写一些内存回收方法来处理。但在python里是不需要处理,会有自动内存回收监测器,定时监测,检查到内存中没有使用的,就会自动进行清理。当然,也不会没有使用马上就进行清理,而是回收监测机制定时循环监测。
回收方法两个:
一:
age = 24
print(age)
del age
- a=1 # 对象 1 被 变量a引用,对象1的引用计数器为1
- b=a # 对象1 被变量b引用,对象1的引用计数器加1
- c=a #1对象1 被变量c引用,对象1的引用计数器加1
- del a #删除变量a,解除a对1的引用
- del b #删除变量b,解除b对1的引用
- print(c) #最终变量c仍然引用1
请参考:
https://blog.csdn.net/love1code/article/details/47276683
二:
age = 24
age = 21
print(age)
3. 编码格式
首先是编码的起源,最开始都是ASSIC码表,但只有255个字符,并且里面没有中文,很明显,不够使用,且不符合中国的使用。所以就想研究出一种编码格式能存放中文,但是中文那么多,怎么办呢?就在ASSIC码表里存放一些映射,当输入哪个标识就可以指向对应的中文编码,即产生了原始的能识别中文的编码格式GB2312,但总共就收录了6、7千个字符,仍然不够使用,又发展了GBK1.0等,其他国家也有对应的字符,以此类推,这个表就越来越大,越来越乱。后来整理出来了一个统一的编码——万国码(unicode),可以存入2**16=65535个字符,并且统一一个字符占两个字节。但是之前的编码格式,英文字符都是一个字符一个字节,现在变成两个字符,明显占用了更大的内存空间,所以又发明了一个新的编码格式utf-8,规定中文为3个字符,英文字符一个字节,总之,编码格式进化路线图如下:
ASSIC->GB2312->GBK->GB18030->Unicode->UTF-8
在python中,不同版本设置的编码格式是不同的
python2.x 默认编码格式为Unicode
python3.x默认编码格式为UTF-8
编码格式申明:
#!-*- coding:utf-8 -*-
有时候即使申明了万能编码格式,但是有时候也会报乱码的错误。比如在python27上编写的含中文的脚本,在windows窗口上输出就可能乱码。乱码问题,可能有3个地方:
- 编码里的编码格式
- 编辑器的编码格式
- 输出端的编码格式
总之:unicode 向下兼容gb2312,gbk。unicode是这个扩展进来的,而utf-8是扩展后,重新分类的。
4.注释
单行注释:#
多行注释:3个单引号或者3个双引号
5.与用户交互
input(),这个输入的都是字符串,后面如果想做相应的运算处理,还是需要使用强制转换
- int() 表示强制转换为整型。
- str()强制转换为字符串。
- + 表示字符串的拼接
- ,表示独立的数据拼接
比如:
age = 20
age1 = int(age)
print("My age is ",age,"years old")print("My age is "+str(age)+"years old")#强制转换后,age为int,但是+只连接字符串,所以必须强制转换为字符串
6.缩进
所有报indented**相关的都是缩进的错误
在windows 和linux里,tab键,不兼容,所以建议使用4个空格来表示缩进
为什么要用缩进? 在其他语言里都使用了{}大括号来区分代码块,但是python省去了大括号,所以只能使用缩进来区分代码块。
在一个代码块里,尽量使用统一的缩进方式,否则程序会报错。
7.if语句
程序中最常用的语句,只需要记住语法,后期再慢慢熟悉
比如猜年龄
age_of_princal = 56
guess_age = int(input(">>"))
if guess_age == age_of_princal:print("You're right!")
else:
print("You're wrong!")
再比如,多分支
score = int(input())
if score > 90:
print("A")
elif score > 80:
print("B")
elif score > 70:
print("C")
else:
print("no")