zoukankan      html  css  js  c++  java
  • 【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】
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    微软职位内部推荐-SENIOR SDE
    微软职位内部推荐-Senior Network Engineer
    微软职位内部推荐-Principal Dev Manager
    微软职位内部推荐-SDE II
    微软职位内部推荐-Sr DEV
    【转载】NIO服务端序列图
    【转载】NIO客户端序列图
    同步与异步
    Linux查找命令
    Spring中Bean的实例化
  • 原文地址:https://www.cnblogs.com/zhouguanglu/p/9906848.html
Copyright © 2011-2022 走看看