【python】第一日 python2和python3区别 命名方式 三种结构

一、python2和python3区别

python2和python3区别:https://www.cnblogs.com/weikunzz/p/6857971.html

1)print 语句区别

  python2:print是个class,所以可以不用加括号,print 1,2+3

  python3:print是个内置函数,必须加括号,print(1,2+3,end=" ")

2)input区别

  python2:input输入的是int类型,raw_input输入是str类型

  python3:input输入的是str类型,没有raw_input

       另外几种输入方法:

    a)sys.stdin.readlines() 输入最后包含' '

    b)input().split()-------->map(int,input().split())     python2:返回的是列表    python3:返回的是迭代器     

3)整除    

  python2:print 1/2  得0   

  python3:print (1/2)  得0.5   print(1//2)   得0

 4)range和xrange

  python2:range返回的列表,xrange返回的是class xrange,用于for循环

  python3:range返回的是class range, 用于for循环, 想要列表使用list(range(0,4))

5)try except

  python2:

try:
    ......
except Exception,e:
    ......
View Code

  python3:

try:
    ......
except Exception as e:
    ......

 6)编码

这一篇内容写的很好:Python问题编码大终结:https://www.cnblogs.com/vipchenwei/p/6993788.html

首先清楚几个问题:

1、 编码和编码方式

  编码是字符集,编码方式是从字符集的实现,有gbk,utf-8,ascii等等 

  python2的字符串类型:unicode和str,不区分str和bytes的,如果开头写# -*- coding:utf8 -*-  按照utf8读写文件,以及字符串也默认按照这个编码,否则默认按照ascii编码

x='abc'
这里abc按照ascii编码的str
# -*- coding:utf8 -*-
x='abc'
这里abc按照utf8编码 

  python3的编码:str和bytes类型,str默认是unicode字符集,bytes是str的实现,可以是gbk,utf8,utf16,utf32

2.编码和解码

  编码:把字符串变成二进制(明文-------->密文)

  解码:把二进制变成字符串(密文-------->明文)

  python2可以从任何一个地方带入字符串,如果从ascii,utf8,gbk,其他字符编码的时候,要先解码成Unicode,然后在encode成其他字符串编码

  python3默认从Unicode进入,所以直接可以encode成其他编码

3.文件编码和解码

  文件编码:就是把在文档编辑器的文档保存到硬盘,windows默认是gbk,linux默认是utf8,可以通过locale查看,

  文件解码:把文件从硬盘读到内存,按照什么方法读,就是解码方式

  解释器解码:和文件解码一致,python2默认是ascii,python3默认utf8

  一般来说解码和编码方式要一致,否则容易乱码或者错误

  

print("")
#python2中,如果保存之后执行,不加# -*- coding:utf8 -*- 的情况下会报错, 文件编码(保存)是按照utf8或者gbk编码成二进制,但是执行时候按照ascii,没有相对应字符,所以出错
#python3中,“中”是unicode字符,保存按照utf8,打开执行正常(默认utf8解码),如果按照gbk保存,打开则会报错,但是加上# -*- coding:gbk -*-,就会正常执行
#所以编码和解码尽量一致,python中尽量都表明用utf8存储

 4.输出到屏幕

这个是内存到内存的转换,所以编码错乱会乱码或者报错

  python2:没有bytes,所以转为utf8的仍然是字符串,想看二进制码用repr

  python3:只有bytes,所以转为utf8之后是二进制码,想看字符串,在decode回去

python2

# -*- coding:gbk -*-
s_gbk = ""
s_utf8 = s_gbk.decode('gbk').encode('utf8')  
s_unicode = s_gbk.decode('gbk')   

print("s_utf8: " + s_utf8)   #s_utf8: 鍛 utf8输出到cmd,cmd编码方式是gbk,所以乱码
print("s_gbk: " + s_gbk)     #s_gbk: 周
print("s_unicode: " + s_unicode)      #s_unicode: 周

#文件保存要用gbk或者ansi

python3:

# -*- coding:gbk -*-
s_unicode = "zgl周广露无敌"
s_gbk = s_unicode.encode('gbk') 
s_utf8 = s_unicode.encode('utf8')
print(s_utf8)   #b'zglxe5x91xa8xe5xb9xbfxe9x9cxb2xe6x97xa0xe6x95x8c'
print(s_gbk)    #b'zglxd6xdcxb9xe3xc2xb6xcexdexb5xd0'
print(s_unicode)     #zgl周广露无敌

 二、命名方式

1)变量命名

  •   变量名只能包含数字,字母和下划线_,不能以数字开头
  •   不能以关键字作为变量,关键字如下:

and, del, from, not, while, as, elif, global, or, with, assert, else, if, pass, yield, break, except, import, print, class, exec, in, raise, contiue, finally, is, return, def, for, lambda, try

    关键字查询:

import keyword
print(keyword.kwlist)  #  查看关键字
keyword.iskeyword('as')   #  查看as是否是关键字

2)命名规范

  python命名规范:https://www.cnblogs.com/EmptyRabbit/p/7679093.html

  • module_name,  模块
  • package_name,  包
  • ClassName,  类
  • method_name,  方法
  • ExceptionName,   异常
  • function_name,  函数
  • GLOBAL_VAR_NAME, 全局变量
  • instance_var_name,  实例
  • function_parameter_name,   参数
  • local_var_name.  本变量

3)代码规范

  代码规范:https://www.cnblogs.com/JZ-Ser/p/7056332.html

 三、三种结构

1)顺序结构

2)分支结构

#单分支结构
if <判断条件>:
    <语句块>

#双分支结构
if <判断条件>:
    <语句块>
else:
    <语句块>

#多分支结构
if <判断条件>:
    <语句块>
elif <判断条件>:
    <语句块>
else:
    <语句块>

竟然没有switch......case......语句

3)循环结构

#while 循环
while <判断语句>:
    <语句块>

#while-else 循环,执行完while,执行else 
while <判断语句>:
    <语句块>
else:
    <语句块>

#for循环
for i in range(0,4):
    <语句块>

for i in 列表|元祖:
    <语句块>

#for-else循环
for i in range(0,4):
    <语句块>
else:
    <语句块>
  • continue    结束当前循环,继续执行下一次循环(后续代码块不被执行)
  • break    跳出并结束整个循环,执行循环后的语句。当有多层循环,使用循环嵌套时,仅能跳出一层循环

 注意事项:

  •   对于for和while,不算子程序,在里面赋值也不是局部变量,是全局变量
for i in range(2):
    print("x")
    x = 3
print(i)     #1
print(x)     #3

while True:
    y = 2
    break
print(y)      #2
print(globals())##。。。。。。。。。。。。'i': 1, 'x': 3, 'y': 2}

支付宝     
您的资助是我最大的动力!
金额随意,欢迎来赏!
微信

如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我

如果,想给予我更多的鼓励,求打       付款后有任何问题请给我留言!!!

------------------------------------------------------------------------------------------
作者:【周sir】
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
原文地址:https://www.cnblogs.com/zhouguanglu/p/9906848.html