zoukankan      html  css  js  c++  java
  • Python基础入门

    1.python版本间的差异:

        1.1:2.x与3.x版本对比

    version

    2.x

    3.x

    print

    print " "或者print()打印都可以正常输出

    只能print()这种形式打印,否则会出现

    SyntaxError

    input

    raw_inut

    input:输出原生的数据类型,输入什么类型的值,就输出什么类型

    raw_input:全部以字符串形式输出

    3.x取消了raw_input方法,只能使用input()

    方式提示输入字符串, 该方法和2.x版本的raw_input()

    如果想要实现与2.x input()输出原生数据类型的值,

    可以使用eval(input())

    class

    2.x支持新式类,和经典类,使用新式类时,类继承顺序会影响最终继承的结果

    必须使用新式类,解决了类间继承顺序问题

    例如:1/2,2.x输出的值为0

    例如:1/2 3.x输出的值为0.5

               1.2:python数据类型

          int  有符号整形,如:1,11,111,-1,-111 ... ,2.x范围在-2**31~2**31-1之间,取决于操作系统,不会小于这个范围

          float  浮点型,如:1.11.1.111,-1.111 ...

          str  字符串,如:'hello' , 'python' , '1' , 'string' ...,注意,字符串需要使用引号(' ')或者双引号("")引起来,

          bool  布尔类型,只有两个值,真:True  假:False,任何非零的数据类型,结果都为真,当结果为int 0 时,则为False

          long  这个类型只存在2.x版本,取值范围无限大,取决于可用的虚拟内存

          complex  复数,如:3.14j,4.53e-7j ...

          元组(tuple)  如 ('a','hello','python','1')

          列表(list)  如 ['a','hello','python','1']

          字典 (dict)如{'name':'zcy','age':25,'job','IT'}

        1.3:python编码

          python 2.x版本默认string字符编码,1个字符只能存8bit,可以使用内置函数,chr()和ord() 进行字符转换

          python 3.x默认使用unicode编码格式,可以使用内置函数unichr()和ord()进行字符转换

        1.4:python的命名规范

          python变量名(标识符)只能以字母或下划线开头,且不能包含特殊字符,注意python保留关键字不能当作变量名,这样等于重写python的内置方法,可能会影响其他方法的调用,具体python保留字,见1.4.1小节内容

          为了书写规范,建议变量名使用统一的风格书写,例如:驼峰式  SunOfBeach 或者 sun_of_beach

          单个前导下划线开头的标识符,意味着约定为私有的

          两个前导下划线开头的标识符,表示强烈专用的标识符

          如果标识符还有两个下划线结束,则该标识符是语言的特殊名称      

          1.4.1:python保留字

     1 #通过导入keyword模块,我们可以查看当前python保留了哪些关键字
     2 import keyword
     3 
     4 #查看python保留关键字
     5 keyword.kwlist
     6 
     7 #2.x 输出 ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
     8 
     9 #3.x 输出 ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
    10 
    11 
    12 #注意,3.x新增了['False','None','True','nonlocal']同时去除了2.x ['exec']的关键字,大家在命名规范时,应该遵循3.x的关键字,便于向后兼容
    13 
    14 #如果不确定该变量名是否为关键字,也可以通过下面这种方法,检查是为关键字
    15 keyword.iskeyword('name')
    16 
    17 #返回False,说明该变量名不是系统保留关键字,即,可用
    View Code

     1.5:python注释

          python有两种方式注释,一种是单行注释,在语句前加#这个符号,,也可以使用多行注释,使用连续的三个单引号在需要注释的内容范围两侧添加,也可以使用连续的三个双引号。例如:

          '''这里是

            注释

          '''

          """

            这里也是

            注释

        """

        1.6:python的语法

          python以简洁著称,摒弃了其他如c的{}花括号方式书写方式,以及为了追求语言的可读性,强制要求语法缩进,同一个语句快的代码缩紧必须相同,否则会出现缩进错误 IndentationError,如果想一行写多条语句,可以使用分号;隔开

        1.7:python运算符

    + - * / % // 加法,减法,乘法,除法,取模,地板除
    >>   << 左按位移位,右按位移位
    &   ^  | 按位与,按位异或,按位或
    ** 指数幂运算

    > >=

    == !=

    < <=

    大于,大于等于

    等于,不等于

    小于,小于等于

    = **=

    += -=

    *= /=

    %= //=

    |= &=

    >>= <<=

    等于,幂等于

    加等于,减等于

    乘等于,除等于

    取模等于,地板除等于

    按位或等于,按位与等于

    按位右移等于,按位左移等于

    is is not 是真,非真
    in not in 在里面,不在里面
    and or not 且,或,非
    ~  

    二.python的数据类型操作

        2.1:变量赋值操作

     1 #当想查看当前的两个变量是否指向同一个内存地址时,可以使用id()方法
     2 a = 2
     3 print(id(a))
     4 #打印结果为 140723441682448
     5 
     6 b = a
     7 print(id(b))
     8 #打印结果为 140723441682448
     9 #可见,a和b指向的都是同一块地址空间,注:以上两个值与使用的平台有关,不一定都是一样的数值,但是这两个数值一定是相等的
    10 
    11 a = 5
    12 print(id(a))
    13 
    14 #打印结果为 140723441682376
    15 
    16 print(id(b))
    17 #打印结果为 140723441682448
    18 #通过观察两个变量的指针变化,可以发现,a值的改变并不会影响到已经被赋值的b
    View Code

        2.2:元组(tuple)

     1 #例如,定义一个元组
     2 a = ('a','hello','python','1')
     3 #查看元组的内置方法
     4 dir(a)
     5 #将会输出一个列表形式的方法名称
     6 # 2.x  输出['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
     7 
     8 #3.x输出 ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
     9 
    10 #元组提供了两个公有方法给我们使用
    11 a.count('hello')        #统计元组里面有多少个相同的元素'hello',很显然,这里只有1个,所以输出结果为 1
    12 
    13 a.index('hello')        #返回元素'hello'的索引位置,python的索引位置是从0开始的,所以这里的‘hello’元素的索引是1,而不是2.
    14 
    15 
    16 #元组的访问方式
    17 a[1]    #显示下标为1的元素,因为元组的下标是从0开始的,所以会显示元素'hello'
    18 a[2]    #这里会显示第python这个元素
    19 a[0:1]    #显示元素从位置0(包括0)  到1(不包括1),即显示'a'
    20 a[0:2]    #显示元素从位置0(包括0)到2(不包括2),即显示('a','hello')
    21 a[-1]    #显示倒数第一个元素,即'1' 
    22 a[-2]    #显示倒数第二个元素,即'python'
    23 a[:-2]    #显示元素从位置0(包括),到位置倒数第二个(不包括倒数第二个),之前的元素都显示出来,即('a','hello')
    24 a[-2:]    #显示元素从位置倒数第二个(包括)到最后一个(包括),即('python','1')
    25 a[0:4:2]    #该方式先将前面的[0:4]条件先筛选出来,然后再进行后面的:2,即每隔一位取一个值,所以这里将显示('a','python')
    View Code

               2.3:列表(list)

          列表与元组及其相似,不同之处在于,元组的值是固定,不可变的,而列表的值可以通过其自身的公有方法改变的

          列表的访问方法与元组一样

     1 #定义一个列表
     2 b = ['a','hello','python','1']
     3 #查看列表的内置方法
     4 dir(b)
     5 # 2.x 输出 ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
     6 
     7 # 3.x输出['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
     8 
     9 b.append('tail')    #在列表末尾追加一个元素'tail'
    10 b.count('python')    #统计列表中有多少个相同的元素'python' 
    11 b.extend('how')    #在列表后面追加三个字符串'h','o','w'
    12 b.index('python')    #显示元素‘python’的索引,这里将输出2
    13 b.insert(1,'niubi')    #在索引为的位置插入元素'niubi',及原来的元素从1往后加1
    14 b.pop()    #将列表最后一个元素删除
    15 b.remove('niubi')    #删除指定元素,即,将指定的'niubi'元素删除
    16 b.reverse()    #将列表的元素由原来的从左到右顺序变成从右到左方式排序
    17 b.sort()    #将列表按照assci顺序排序,注意!3.x版本的排序是不能同时有多个数据类型一起排序的。
    18 b.clear()    #将列表b清空,这个方法只有3.x才有
    19 a = b.copy()    #将列表b复制给a,貌似没有发现有什么其它特别之处相对于直接使用a = b方式,这个属性也是只有3.x版本才有
    View Code

        2.4:字典(dict)     

          字典是另一种可变容器模型,且可存储任意类型对象。

          字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

          dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

    1 dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
    2  
    3 print ("dict['Name']: ", dict['Name'])
    4 print ("dict['Age']: ", dict['Age'])
    5 
    6 以上实例输出结果:
    7 
    8 dict['Name']:  Runoob
    9 dict['Age']:  7
    View Code

        2.5:数据类型转换       

                   列表转换成元组

    1 #定义一个列表
    2 a = ['a','b','c']
    3 
    4 #通过tuple函数,将列表转换成元组,我们把新生成的元组赋值给c
    5 c = tuple(a)
    6 
    7 print(c)
    8 #结果显示 ('a', 'b', 'c'),说明我们现在已经把列表转换成一个新的元组了。
    View Code

           元组转换成列表

    1 #由于元组上不可更改的,当我们想变更时该怎么办呢?只能将元组转换成列表,将其修改后,再转换成元组形式
    2 #定义一个元组
    3 a = ('a','b','c')
    4 
    5 #使用list函数将元组转换成列表,然后赋值给一个新的变量名为c,这样c就有list函数所拥有的属性了
    6 c = list(a)
    7 print(c)
    8 
    9 #打印结果输出为 ['a', 'b', 'c'],通过这种方法,如果我们想在现有的元组基础上做操作修改,可以先转换成列表,列表是考验直接修改元素的,修改完后,我们再将它转换成元组,重新赋值给a
    View Code

    三.条件及循环语句控制

        3.1:if ... elif... else

     1 #if语句的语法是
     2 
     3 if expression:
     4     statement(s)
     5 
     6 #例如
     7 if 1 < 2:
     8     print('yes')
     9 
    10 #也可以执行多个语句块
    11 
    12 if 1 < 2:
    13     print('yes')
    14     print('hello if')
    15 
    16 
    17 
    18 #else语句是结合if或者elif并用的,语法格式如下
    19 if expression:
    20     statement(s)
    21 else:
    22     statement(s)
    23 
    24 #例如
    25 if 1 > 2:
    26     print('yes')
    27 else:
    28     print('no')
    29 
    30 #elif是与if结合使用的,不能单独直接使用,例如
    31 if expression1:
    32     statement(s)
    33 elif expression2:
    34     statement(s)
    35 else:
    36     statement(s)
    37 
    38 #例如
    39 if 1 > 2:
    40     print('yes')
    41 elif 3 > 2:
    42     print('yes')
    43 else:
    44     print('no')
    View Code

        3.1.1:if ... elif ... else嵌套使用

     1 if 1 < 2:
     2     print('yes')
     3     if 2 > 3:
     4         print('yes')
     5     elif 2 < 3:
     6         print('yes')
     7     else:
     8         print('no')
     9 elif 1 > 2:
    10     print('yes')
    11 else:
    12     print('no')
    View Code

        3.2:while ... for

     1 #语法
     2 while expression:
     3     statements(s)
     4 
     5 #例如,当为真,则打印yes,是个无限循环语句
     6 while True:
     7     print('yes')
     8 
     9 #通过添加适当的判断语句来结束这个语句执行
    10 #定义一个变量,标记
    11 flag = True
    12 while flag:
    13     print('yes')
    14     if flag:
    15         flag=False    # 把flag值改为false,这样条件就不满足,就不会循环执行
    16 
    17 #也可以通过break,或continue关键字去控制语句的输出,如下
    18 count = 0
    19 while True:
    20     if count >2:
    21         break    #当条件满足时,则使用break中断语句的执行
    22     count +=1    #每一次循环,都在count基础上加1
    View Code
     1 #for循环与while循环,for循环是可以预知循环次数的,不需要人为大中断,也能自己结束,而while是需要一个结束条件的。例如
     2 #语法
     3 for iterating_var in sequence:
     4     statements(s)
     5 
     6 
     7 #实例
     8 for number in range(10):
     9     print(number)
    10 
    11 #将会打印输出0-9
    View Code

        3.3:and ... or ... not

     1 #and or not 一般用于多重条件判断时使用,例如
     2 
     3 a = 1
     4 b = 2
     5 if a > 0 and b > a:
     6     print(a+b)
     7 
     8 #打印结果将输出3,只要其中一个条件不满,则不会执行语句块的代码
     9 
    10 if a < 0 or b>a:
    11     print(a+b)
    12 
    13 #打印结果将输出3,只要有其中任一个条件满足,则执行语句代码块
    14 
    15 
    16 if not a:
    17     print(a+b)
    18 
    19 
    20 #这里不会输出任何东西,因为a是大于0,为真,只有条件为假,才会执行代码快语句
    View Code

    四.文件处理

        4.1:文件操作语法

    1 file object = open(file_name,[access_mode],[buffering]

        

    • file_name: file_name参数是一个字符串值,包含要访问的文件的名称。

    • access_mode: access_mode 确定该文件已被打开,即模式。读,写等追加。可能值的一个完整列表在下表中给出。这是可选的参数,默认文件访问模式是读(r)
    • buffering: 如果缓冲值被设置为0,没有缓冲将发生。如果该缓冲值是1,将在访问一个文件进行行缓冲。如果指定的缓冲值作为大于1的整数,那么缓冲操作将被用指定缓冲器大小进行。这是可选的参数。

        4.2:文件访问模式

    模式 描述
    r 以只读方式打开文件,文件指针放在文件开头,这个是默认模式
    rb 以二进制格式读取,文件指针放在文件开头
    r+ 以读取和写入方式打开文件,文件指针在文件开头
    rb+ 以二进制读取和写入方式打开文件
    w 以只写方式打开文件,如果文件存在,则覆盖文件内容,不存在则创建一个新文件
    wb 打开文件以二进制方式写入,文件存在则覆盖,不存在则创建新文件
    w+ 以写入和读取方式打开文件,如果文件存在则覆盖,不存在则创建新文件
    wb+ 以二进制方式写入和读取文件,存在则覆盖现有文件,不存在则创建新文件
    a 以追加方式写入文件末尾,如果不存在则创建该文件
    ab 以二进制格式追加在文件末尾,不存在则创建该文件
    a+ 以追加和读取方式打开文件,如果文件存在,文件指针在文件的末尾,如果不存在,则创建新文件并写入和读取

        4.3:文件的操作示例

     1 open_file = open('/tmp/file.txt',r+)     #以读取和写入方式打开文件
     2 
     3 open_file.write('hello\n')    #写入内容,加上换行符,
     4 
     5 open_file.close()        #打开文件后,不做操作需要关闭
     6 
     7 #文件操作有以下几种方法
     8 #2.x 方法 ['__class__', '__delattr__', '__doc__', '__enter__', '__exit__', '__format__', '__getattribute__', '__hash__', '__init__', '__iter__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'close', 'closed', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'mode', 'name', 'newlines', 'next', 'read', 'readinto', 'readline', 'readlines', 'seek', 'softspace', 'tell', 'truncate', 'write', 'writelines', 'xreadlines']
     9 
    10 #3.x 方法['_CHUNK_SIZE', '__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_checkClosed', '_checkReadable', '_checkSeekable', '_checkWritable', '_finalizing', 'buffer', 'close', 'closed', 'detach', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'line_buffering', 'mode', 'name', 'newlines', 'read', 'readable', 'readline', 'readlines', 'seek', 'seekable', 'tell', 'truncate', 'writable', 'write', 'writelines']
    View Code
     1 f = open('./aa', 'rb')
     2 # python3的长度只字符长度,而不是字节长度
     3 # python2的长度只字节长度,而不是字符的长度
     4 f.read(12)
     5 # 表示读取的单行如果小于3时,则会读取下一行完整行,当读取的单行长度大于3,则只读取当前偏移位置到当前行结束,不是仅仅读取三个字符长度
     6 f.readlines(3)
     7 f.tell()  # 返回当前指针位置
     8 # seek第一个参数表示偏移量,从0开始
     9 # 第二个参数表示偏移位置,从什么位置开始 0 表示从文件开头,1表示从当前tell()方法返回的位置开始,2表示文件结尾位置开始
    10 f.seek(0, 1)  # 从当前位置的第0个字符开始偏移0个字符位置
    11 f.seek(1, 1)  # 从当前位置的第1个字符开始偏移1个字符位置
    12 f.seek(2, 0)  # 从文件开头位置开始偏移2个字符位置
    13 f.seek(-2, 2)  # 从文件末尾位置开始,使用负数从倒数第二个位置往后读
    14 print(f.read(1))
    15 f.close()
    View Code
  • 相关阅读:
    NTC3950-10K温度传感器
    Maven常用命令:
    Linux-IIC驱动(详解)
    sourceinsight4 用设置
    LTDC/DMA2D—液晶显示***
    STM32F429的LTDC和DMA2D ***
    python机器学习sklearn 岭回归(Ridge、RidgeCV)
    random_state 参数
    python3 文件及文件夹路径相关
    机器学习:简单线性回归
  • 原文地址:https://www.cnblogs.com/BigSoft/p/12580473.html
Copyright © 2011-2022 走看看