windows下打开cmd或者powershell进入到命令行模式
命令行模式下也可以直接执行python文件,但是需要先cd
进入文件所在目录
c:\cd> e:\test
e:\test> test.py
在命令行模式下输入python命令进入到python交互模式,特征是出现了>>>
$ c:\> python
......
>>>
同时输入
exit()
命令可以退出python交互模式,且回到命令行模式
在第一行输入以下代码
#!/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
单行注释:#
多行注释:'''……'''
或"""……"""
输出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个标准数据类型:
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
制表符等
r
或R
>>> r‘/nabcd/t’
/nabcd/t
不使用字符转义后,还有另一种换行的输出'''...'''
命令行模式下,直接输入
print('''abcdedf
然后按回车键,不会立马输出字符,而是出现...
,填完要输出的内容后再输入''')
即可输出换行字符>>> print(''' line1 ...line2 ...line3''') line1 line2 line3
与and
,或or
,非not
有两种方式:
%
,通过加不同的参数,可以替换为不同数据类型的内容
占位符 | 替换内容 |
---|---|
%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 占位符即可,如果要显示’%’字符可以用
%%
转义
字符串类型的内置方法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
读写原理,修改记事本内容时,会先读取内容并转换为Unicode到内存中,待保存时再把 Unicode转换为UTF-8保存到文件
传输原理,浏览网站的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器
当看到一些网站的源码有类似
<meta charset="UTF-8" />
,那就表示该网页用的是UTF-8编码
读取内容的时候也会先转换为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编码的字符串
使用[]
初始化,元素可不是同一类型
name = ['xiaoming',1,[2000,01,01]]
通过索引获取元素
range(10)
或range(1,10)
可以创建一个整数序列,通过list()
能转换为一个list列表
>>> list(range(5))
[0,1,2,3,4]
数据操作:
新增:
list.append(str)
,追加一个元素到list列表末尾list.insert(n,str)
,追加一个元素到list列表的索引n处list.extend(L)
,将L列表中的所有元素,扩充到list列表的末尾修改:直接给指定索引赋值,list[0] = 1
删除:list.pop(n)
,删除一个位于索引n的元素,不填写参数时,默认删除最后一个元素
判断元素在列表中出现的次数:list.index(value)
,value
为要判断的元素的值
倒排:list.reverse()
,倒排列表中的元素
判断元素是否存在
>>> 3 in [1,2,3] #存在时返回True反之False
True
可以使用操作符+号进行拼接
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a + b
[1,2,3,4,5,6]
使用()
初始化,除了初始化后不能修改,其他均与list差不多
初始化的时候,固定了引用类型的指向,但是可以通过修改指向的值使元组的值改变
当只有一个元素,需要加上
,
,防止被识别成数值a=(1,)
初始化
d = {"xiaoming":59,"xiaowang":99}
d['key'] = 'aaa'
,当key
这个键在d
中已经存在时为修改,反之为新增d.pop('key')
,删除键为key
的元素,并返回删除的项key
是否存在:
key in d
,若key
存在返回True
,不存在返回False
d.get(key,-1)
,存在时返回该key
的值,不存在时返回None
,若已经指定了第二个参数,不存在则会返回第二个参数的值和dictionary
类似,但是只有key
没有value
,初始化需要用到一个list
s = set([1,2,3,4,5])
数据操作
添加键:set.add(key)
删除键:set.remove(key)
交集(取所有过滤重复),并集(取相同)
>>> s1 = set([1,2,3])
>>> s2 = set([2,3,4])
>>> s1 | s2 #交集
{1,2,3,4}
>>> s1 & s2 #并集
{2,3}
python可以同时为多个变量赋值,a,b=1,2
type()
可以判断变量的数据类型,isinstance(1,int)
可以判断变量是否是指定的类型,第二个参数也可以是一个数据类型的元组
字符串有四个内置方法可以转换大小写
str.upper()
,将所有字母转换为大写,判断使用str.isupper()
str.lower()
,将所有字母转换为小写,判断使用str.islower()
str.capitalize()
,将所有字母转换为首字母大写,其余小写,无判断方法str.title()
将所有单词转换为首字母大写,其余小写,判断使用str.istitle()
python有两种索引方式
[0]
的索引,表示从第一位元素开始获取,依次递增[-1]
的索引,表示从最后一位元素开始获取,依次递减None
不能理解为0,0是有意义的,而Node
是特殊的空值
字符串和列表使用+
操作符可以拼接,使用*操作符可以重复
byte
中,无法显示为ASCII
的字节用\x##
显示,如‘中’,包含3个字节,显示为\xe4\xb8\xad
python运行处理unicode字符串,加前缀u或U,u'this is a unicode string'
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