变量:
1.什么是变量?
变量是用来临时存储数据的,它是保存在内存中的。通俗的来讲:变量就是用来存值的。
1 name="alex li" 2 name2=name 3 name="JACK" 4 print(name,name2) 5 JACK alex li
上面name是变量名,alex li 是变量值。大家看上面的代码,估计是一脸懵逼,没错,我也是,经常弄混。所以我们来画图分析一下:
我们来讲解一下,上面所显示的图片是什么意思。首先,alex li ,JACK都是内存中开辟的2块内存空间,开始,name和name2的2个标签都是指向的是alex li,但是name又被重新赋值,所以其实是在内存中重新开辟了1块内存空间,再将name重新指向JACK,而原来的那块指向就不见了。(其实我觉得这个跟字符串不可变有关,你以为是覆盖了原来的,其实根本不是,就是重新开辟内存空间,再贴上标签)
这里又涉及到Python里面的内存回收机制:
当你在内存中不停的开辟空间的时候,我们是不需要像其他的语言考虑回收的问题的,因为Python本身就存在一个内存回收的机制。
假设,我们把一栋大楼看成是一块内存,把我们为变量值开辟的空间,看成是大楼里面的一间间小房子,而变量名,就是房间里面的门牌号(其实相当于里面存的是变量内存的地址)。上面的alex li 相当于就是有2个门牌号指向这个房间,之后又将name指向JACK,就把指向alex li的门牌号给了JACK。那么内存回收机制就是一个楼管,看看,那个房间上面的没有门牌号,就将屋子里的东西清空。就相当于你都没有地址指向你,就没有人找你,当然就没有人用,楼管自然要将你清空了。
变量的命名规则:
1.要是描述性的语言(命名要有意义)
2.数字,字母,下划线组成,不能包含关键字,空格,特殊字符
3.不能以数字开头
4.不能以中文命名
5.最好不要用大写的命名(第一:Python里面的变量有种,一种是变量,一种是不变的变量;一般我们将不变的量用大写来区分)
6.长的命名用_来区分,或者可以用驼峰式命名
字符编码与二进制
为什么会要有字符编码?
首先计算机底层只认识 0101 二进制,因为底层电压,脉冲信号就只有高低高低的信号,高的就用1,低的就用0,电流,有就是1,没有就是0。那么问题来了,如何用我们人能识别的字母,符号来让计算机识别呢,这样就需要一个转换的过程,就是接下来的字符编码。
128 64 32 16 8 4 2 1
1 1 1 1 1 1 1 1
这上面的8位的和2**8=255,有255个的数字。发明了ASCII表,外国人呢就用了127个,后面的就留给我们第三世界的国家。
中国呢,由于中文博大精深,外国人不懂,所以留下的表格不够用,我么就自己弄了一张扩展表,你是找中文,就找ASCII表对应的中国用的地方,再通过映射,指向我们自己的表。
ASCII表,英文占1bytes=8bit
------>gb2312 7000+
------>gbk1.0 20000+ 95年
------>gb18030 27000+ 2000年
国际标准组织就觉得不行,各个国家都搞自己的一套标准很乱,于是Unicode就诞生了,万国码,中文,英文都占2个字节,但是歪果仁就不干了,我用ASCII挺好的,就只占一个字节,干嘛要用你的Unicode啊?,于是Unicode的扩展集,可变长的,可伸缩的utf-8就出来了。英文还是以ASCII的形式,中文就占3bytes。
1.asiic 8位表示一个字符 1字节(Bye) = 8字位 =8个二进制数,asiic码一般第一位都为0
2,unicode(万国码)2个字节表示一个字符,改版后4个字节表示一个字符
3,unicode升级版:UTF-8:最少用一个字节标识一个字符,UTF-16:最少用两个字节表示一个字符
A:用一个字节标识一个字符
欧洲文字:用两个字节表示一个字符
亚洲文字:用三个字节表示一个字符
4,gbk:国标,中国人自己使用,只包含英文与中文
一个英文一个字节
一个中文两个字节
用户交互程序
用input与用户交互
username=input("username:") password=input("password:") print(username,password)
注意:input接收的都是字符串类型
if 条件:
代码
elif 条件:
代码
else:
代码
age_of_oldboy=56 guess_age=int(input(">>>:")) if age_of_oldboy==guess_age: print("yes") elif age_of_oldboy<guess_age: print("think smaller") else: print("think bigger")
这里面设计到,if.else的判断,python缩进
python缩进都是python特带的,可以减少了代码,代码的格式很舒服
格式化输出:
msg="你好%s,我%d岁"%("小陈",18)
name=input("name:") age=input("age:") job=input("job:") salary=input("salary:") msg=''' -------info of '''+name+'''---- name:'''+name+''' age:'''+age+''' job:'''+job+''' salary:'''+salary msg2=''' ----------info of {_name}------- name:{_name} age={_age} job:{_job} salary:{_salary} '''.format(_name=name,_age=age,_job=job,_salary=salary) msg3=''' ----------info of %s------- name:%s age=%s job:%s salary:%s '''%(name,name,age,job,salary) msg4=''' ----------info of {0}------- name:{0} age:{1} job:{2} salary:{3} '''.format(name,age,job,salary)
以上是字符串的几种格式化的字符串的方式,但是建议大家不要用字符串的拼接,其他几种都是在空间开辟一块内存就可以实现,但是字符串的拼接是开辟几块内存,再进行拼接的。上面的看不懂没有关系,后面我将继续更博。。。