Python 基础
Python 的语法比较简单,采用缩进方式,写出来的代码就像下面的样子:
# print absolute value of an integer:
a = 100
if a >= 0:
print(a)
else:
print(-a)
以#开头的语句是注释,注释是给人看的,可以是任意内容,解释器会
忽略掉注释。其他每一行都是一个语句,当语句以冒号:结尾时,缩进
的语句视为代码块。
*(tab)为4个空格
*Python 程序是大小写敏感的,如果写错了大小写,程序会报错。
数据类型和变量
数据类型
整数
浮点数
字符串
''或""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有 a,b,c 这 3 个字符。如果'本身也是一个字符,那就可以用""括起来,比如"I'm OK"包含的字符是 I,',m,空格,O,K这 6 个字符。
如果字符串内部既包含'又包含"可以用转义字符\来标识,比如:
'I\'m \"OK\"!'
表示的字符串内容是:
I'm "OK"!
原理{
>>> print(' \' ')
'
>>> print('\\\n\\')
\
\ }
如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,
Python 还允许用 r' '表示' '内部的字符串默认不转义:
>>> print('\\\t\\')
\ \
>>> print(r'\\\t\\')
\\\t\\
如果字符串内部有很多换行,用\n 写在一行里不好阅读,为了简化,
Python 允许用'''...'''的格式表示多行内容:
>>> print('''line1
... line2
... line3''')
line1
line2
line3
>>> exit()
上面是在交互式命令行内输入,注意在输入多行内容时,提示符由>>>变为...,提示你可以接着上一行输入。如果写成程序,就是: print('''line1line2 line3''')
C:\Users\Mis YuT>cd desktop
C:\Users\Mis YuT\Desktop>yy.py
line1
line2
line3
多行字符串'''...'''还可以在前面加上 r 使用,如下:
C:\Users\Mis YuT\Desktop>t.py
\nline1
\n\nline2
line3
布尔值
一个布尔值只有 True、False 两种值,要么是 True,要么是 False,在Python 中,可以直接用 True、False表示布尔值:
>>> True
True
>>> False
False
>>> 3>2
True
>>> 3>5
False
布尔值可以用 and、or 和 not 运算
1、 and 运算是与运算,只有所有都为 True,and 运算结果才是 True
2、 or 运算是或运算,只要其中有一个为 True,or 运算结果就是 True
3、 not 运算是非运算,它是一个单目运算符,把 True 变成 False,False 变成 True
eg:
>>> True or True
True
>>> True or False
True
>>> False or False
False
>>> 5 > 3 or 1 > 3
True
>>> 3 > 5 or 1 > 3
False
>>> True and False
False
>>> not True
False
>>> not 1 > 3
True
空值
空值是 Python 里一个特殊的值,用 None 表示。None 不能理解为0,因
为 0 是有意义的,而 None 是一个特殊的空值
变量
是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_的组合,且不能用数字开头
当我们写: a = 'ABC' 时,Python解释器干了两件事情:
1. 在内存中创建了一个'ABC'的字符串;
2. 在内存中创建了一个名为 a 的变量,并把它指向'ABC'。
*注意:与c语言一样,按照顺序做每一步。
练习
请打印出以下变量的值:
n = 123
f = 456.789
s1 = 'Hello, world'
s2 = 'Hello, \'Adam\''
s3 = r'Hello,"Bart"'
s4 = r'''Hello, Lisa!'''
>>> print('n = 123')
n = 123
>>> print('f = 456.789')
f = 456.789
>>> print('s1 = \'Hello, world\'')
s1 = 'Hello, world'
>>> print('s2=\'Hello,\\\'Adam\\\'')
s2 ='Hello,\'Adam\'
>>> print('r\'Hello,\"Bart\"')
r'Hello, "Bart"
>>>print('r\'\'\'Hello,\nLisa!\'\'\'')
r'''Hello,
Lisa!'''
字符串和编码
字符编码
Unicode 标准也在不断发展,但最常用的是用两个字节表示一个字符(如
果要用到非常偏僻的字符,就需要 4 个字节)。
Python 的字符串
对于单个字符的编码,Python 提供了 ord()函数获取字符的整数表示,
chr()函数把编码转换为对应的字符:
>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'
如果知道字符的整数编码,还可以用十六进制这么写 str:
>>> '\u4e2d\u6587'
'中文'
两种写法完全等价
>>> '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 inposition 0-1: ordinal not in range(128)
由于 Python 的字符串类型是str,在内存中以 Unicode 表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str 变为以字节为单位的 bytes。
Python 对 bytes 类型的数据用带 b 前缀的单引号或双引号表示:
x = b'ABC'
要注意区分'ABC'和 b'ABC',前者是 str,后者虽然内容显示得和前者一样,但 bytes 的每个字符都只占用一个字节。
以 Unicode表示的 str 通过 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 inposition 0-1: ordinal not in range(128)
纯英文的 str 可以用 ASCII 编码为 bytes,内容是一样的,含有中文的 str可以用 UTF-8 编码为 bytes。含有中文的 str 无法用 ASCII 编码,因为中文编码的范围超过了 ASCII 编码的范围,Python 会报错。
在 bytes 中,无法显示为ASCII 字符的字节,用\x##显示。
反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把 bytes 变为 str,就需要用decode()方法:
>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'
要计算 str 包含多少个字符,可以用len()函数:
>>> len('ABCD')
4