<
python3基础笔记(一)
>
上一篇

泛型
下一篇

JS中的正则表达式

命令行模式与python交互模式

命令行模式

windows下打开cmd或者powershell进入到命令行模式

命令行模式下也可以直接执行python文件,但是需要先cd进入文件所在目录

c:\cd> e:\test
e:\test> test.py 
python交互模式

在命令行模式下输入python命令进入到python交互模式,特征是出现了>>>

$ c:\> python
......
>>> 

同时输入exit()命令可以退出python交互模式,且回到命令行模式

python3解释器

在第一行输入以下代码

#!/user/bin python3

这行代码的用意是让操作系统在执行这个脚本的时候,去调用user/bin下面的python3解释器,但是用户没有按默认安装路径安装就无法找到解释器,通过加上env会在env设置里面查找python3的安装路径,在调用对应路径下的python3解释器,#!/user/bin/env python3

设置编码格式

默认情况下,python3源码文件以UFT-8编码,所有的字符串都是unicode编码,也可以为源码文件指定不同的编码

# _*_ coding: cp-1252 _*_

用于告诉python解析器,按照cp-1252编码读取源码,同时也要保证代码编译器也是按照cp-1252编码的

标识符

保留字(关键字)

保留字不能用作任何标识符,通过keyword模块的kwlist可以获取关键字列表

>>> import keyword
>>> keyword.kwlist
['Flase','None','True'...]

判断是否为关键字使用keyword.iskeyword()

>>> keyword.iskeyword('break')
True
>>> keyword.iskeyword('aaaaa')
False

注释

单行注释:#

多行注释:'''……'''"""……"""

I/O

输出print(''),参数为输出字符,如果不需要换行可以加入end参数,print('abc',end='')end的值为结尾间隔符,默认为换行’\n’

print()中用,分隔字符串时,显示默认为空格,所以需要保证,end = ''必须在最后面,且不能再接,

>>> print('abc','efg',end='')       #正确
>>> print('abc','efg',end='','hij') #错误
>>> print('abc','efg',end='',)      #错误

输入input(‘’),参数为提示字符

数据类型

python的变量不需要声明,但是在使用前必须赋值,赋值后才会被创建python3中有6个标准数据类型

  1. Numbers(数字)
  2. String(字符串)
  3. List(列表)
  4. Tuple(元组)
  5. Sets(集合)
  6. Dictionaries(字典)

Numbers(数字)

python3支持int、float、bool、complex(复数)

>>> 5 + 4  # 加法
9
>>> 4.3 - 2 # 减法
2.3
>>> 3 * 7  # 乘法
21
>>> 2 / 4  # 除法,得到一个浮点数
0.5
>>> 2 // 4 # 除法,得到一个整数
0
>>> 17 % 3 # 取余 
2
>>> 2 ** 5 # 乘方
32

数值的除法/总是返回一个浮点数,使用//返回整数

混合计算的时候,python会把整型转换成浮点型

转义字符

用于字符转义,如\n换行,\t制表符等

需要禁用字符转义时,字符串前缀加rR
>>> r/nabcd/t
/nabcd/t

不使用字符转义后,还有另一种换行的输出'''...'''

命令行模式下,直接输入print('''abcdedf然后按回车键,不会立马输出字符,而是出现...,填完要输出的内容后再输入''')即可输出换行字符

>>> print(''' line1
...line2
...line3''')
line1
line2
line3

逻辑关键字

and,或or,非not

占位符

有两种方式:

  1. %,通过加不同的参数,可以替换为不同数据类型的内容

    占位符 替换内容
    %d 整数(十进制)
    %f 浮点数,%0.nf表示显示n个有效小数位数
    %S 字符串
    %x 十六进制
    $ str = "hello $s by $s"%("python","2018-10-28")
    $ print(str)
    >>> "hello python by 2018-10-28"
    

    目前这几种数据类型就够用了,如果还需要替换其他类型的内容,再搜索python 占位符即可,如果要显示’%’字符可以用%%转义

  2. 字符串类型的内置方法format()

    $ str = "hello {0} by {1}".format("python","2018-10-28")
    

    浮点类型控制有效小数位数的占位格式:{0:n}n代表有效的小数位数

字符编码

刚开始只有127个字符(ASCII码)被编入电脑,后来出现了所有语言都统一的编码(Unicode码),但是Unicode用来存储英文会浪费一倍的存储空间,所以就出现了可变长度的编码(UTF-8)

ASCII码中,一个字节对应一个字符

Unicode码中,两个字节对应一个字符

UTF-8中,一个字母对应一个字节,一个汉字对应3个字节(生僻字单个会占4-6个字符

计算机系统通用的字符编码方式:

计算机内存中,统一使用Unicode编码,当保存到硬盘或者传输的时候就会转换为UTF-8

在python3中,字符串是以Unicode编码的

读取内容的时候也会先转换为Unicode,所以如果知道字符串的整数编码,就可以直接用16进制这么写

>>> '\u4e2d\u6587'
'中文'

对于单个字符

python提供了ord(),获取字符的整数表示,以及chr,把编码转换为对应字符

>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'
网络传输

字符串在内存中以Unicode表示,当进行网络传输时,需把字符串转换为字节为单位的bytes(字节流),本地接受时,需要再把bytes转换成字符串

Python对bytes的数据用b前缀表示:如x = b'abc'或者x = b"abc"

把字符串转换成bytes编码

字符串通过encode()方法可以编码为指定的bytes

>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('ascii')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

纯英文可以用ASCII编码为bytes,含有中文可以用UTF-8编码为bytes

含有中文不能用ASCII编码为bytes,因为ASCII编码范围只有英文和一些特殊符号

把编码转换为字符串

通过decode()方法可以将字节流转换为字符串,但是如果包含不能解码的字节会报错,加入errors=’ignore’参数,可以忽略错误字节

>>> b'\xe4\xb8\xad\xff'.decode('utf-8')
Traceback (most recent call last):
  ...
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 3: invalid start byte

>>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
''

加入了errors=‘ignore’后,代码忽略了错误字节返回了'中'字符串

decode()不指定参数时,默认转换为unicode编码的字符串

有序列表(列表&元组)

list(列表)

使用[]初始化,元素可不是同一类型

name = ['xiaoming',1,[2000,01,01]]
tuple(元组)

使用()初始化,除了初始化后不能修改,其他均与list差不多

初始化的时候,固定了引用类型的指向,但是可以通过修改指向的值使元组的值改变

当只有一个元素,需要加上,,防止被识别成数值a=(1,)

键值对类型

dictionary(字典)

初始化

d = {"xiaoming":59,"xiaowang":99}
set

dictionary类似,但是只有key没有value,初始化需要用到一个list

s = set([1,2,3,4,5])

总结

  1. python可以同时为多个变量赋值,a,b=1,2

  2. type()可以判断变量的数据类型,isinstance(1,int)可以判断变量是否是指定的类型,第二个参数也可以是一个数据类型的元组

  3. 字符串有四个内置方法可以转换大小写

    1. str.upper(),将所有字母转换为大写,判断使用str.isupper()
    2. str.lower(),将所有字母转换为小写,判断使用str.islower()
    3. str.capitalize(),将所有字母转换为首字母大写,其余小写,无判断方法
    4. str.title()将所有单词转换为首字母大写,其余小写,判断使用str.istitle()
  4. python有两种索引方式

    1. 大于等于[0]的索引,表示从第一位元素开始获取,依次递增
    2. 小于等于[-1]的索引,表示从最后一位元素开始获取,依次递减
  5. None不能理解为0,0是有意义的,而Node是特殊的空值

  6. 字符串和列表使用+操作符可以拼接,使用*操作符可以重复

  7. byte中,无法显示为ASCII的字节用\x##显示,如‘中’,包含3个字节,显示为\xe4\xb8\xad

  8. python运行处理unicode字符串,加前缀u或U,u'this is a unicode string'

  9. python中del可以删除元素和变

    >>> a = [1,2,3,4,5]
    >>> del a[0]
    >>> a
    [2,3,4,5]
    >>> del a
    >>> a
    NameError:name 'a' is not defined
    
Top
Foot