python3语法

Python3 基础语法

1. 编码

默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。

2. 标识符

  1. 第一个字符必须是字母表中字母或下划线 _ 。
  2. 标识符的其他的部分由字母、数字和下划线组成。
  3. 标识符对大小写敏感。
  4. 在Python 3 中,可以用中文作为变量名,非 ASCII 标识符也是允许的了。

3. 注释

  1. Python中单行注释以 # 开头,实例如下:
1
2
# 第一个注释
print ("Hello, Python!") # 第二个注释

执行以上代码,输出结果为:

1
Hello, Python!
  1. 多行注释可以用多个 # 号,还有 ‘’’ 和 “””:
1
2
3
4
5
6
7
8
9
10
11
12
13
# 第一个注释
# 第二个注释

'''
第三注释
第四注释
'''

"""
第五注释
第六注释
"""
print ("Hello, Python!")

执行以上代码,输出结果为:

1
Hello, Python!

4. 行与缩进

python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。

缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。实例如下:

1
2
3
4
5
6
if True:
print ("Answer")
print ("True")
else:
print ("Answer")
print ("False") # 缩进不一致,会导致运行错误

以上程序由于缩进不一致,执行后会出现类似以下错误:

1
2
3
4
 File "test.py", line 6
print ("False") # 缩进不一致,会导致运行错误
^
IndentationError: unindent does not match any outer indentation leve

5. 多行语句

Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠 \ 来实现多行语句,例如:

1
2
3
total = item_one + \
item_two + \
item_three

在 [], {}, 或 () 中的多行语句,不需要使用反斜杠 \,例如:

1
2
total = ['item_one', 'item_two', 'item_three',
'item_four', 'item_five']

6. 数字(NUMBER)类型

python中数字有四种类型:整数、布尔型、浮点数和复数。

  • int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
  • bool (布尔), 如 True。
  • float (浮点数), 如 1.23、3E-2
  • complex (复数), 如 1 + 2j、 1.1 + 2.2j

7. 字符串(String)

1.Python 中单引号 ‘ 和双引号 “ 使用完全相同。

2.使用三引号(‘’’ 或 “””)可以指定一个多行字符串。


实例:
1
2
3
4
5
6
7
8
word = '字符串'
sentence = "这是一个句子。"
paragraph = """这是一个段落,
可以由
多行组成"""
print(word)
print(sentence)
print(paragraph)

输出结果为:

1
2
3
4
5
6
字符串
这是一个句子。
这是一个段落,
可以由
多行组成

3. 转义符 \。

4. 反斜杠可以用来转义,使用 r 可以让反斜杠不发生转义。 如 r”this is a line with \n” 则 \n 会显示,并不是换行。

5.按字面意义级联字符串,如 “this “ “is “ “string” 会被自动转换为 this is string。

6.字符串可以用 + 运算符连接在一起,用 * 运算符重复。

7.Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。

8.Python 中的字符串不能改变。

9.Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。

10.字符串的截取的语法格式如下:变量[头下标:尾下标:步长]

实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
str = '123456789'

print(str) # 输出字符串
print(str[0:-1]) # 输出第一个到倒数第二个的所有字符
print(str[0:4]) # 输出第一个到第五个的所有字符(不包括第五个)
print(str[3:]) # 如果后者不填默认为最后一个
print(str[-3:-4]) # 如果前者大于等于后者,输出空
print(str[0]) # 输出字符串第一个字符
print(str[1:7:2]) # 输出从第二个开始到第八个且每隔一个的字符(步长为2)
print(str[1:7:]) # 如果步长不填,默认为1
print(str[1:7:100]) # 如果步长超出字符串长度,默认输出第一个
print(str * 2) # 输出字符串两次
print(str + '你好') # 连接字符串

print('------------------------------')

print('hello\nrunoob') # 使用反斜杠(\)+n转义特殊字符
print(r'hello\nrunoob') # 在字符串前面添加一个 r,表示原始字符串,不会发生转义不会发生转义

输出结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
123456789
12345678
1234
456789

1
246
234567
2
123456789123456789
123456789你好
------------------------------
hello
runoob
hello\nrunoob

8. 输入和输出

1.输出

在python中使用print()函数进行输出。


输出字符串时可用单引号或双引号括起来。


输出变量时,可不加引号。


变量与字符串同时输出或多个变量同时输出时,需用“,”隔开各项。

2.输入

Python提供了input()函数用于获取用户键盘输入的字符。


input()函数让程序暂停运行,等待用户输入数据,当获取用户输入后,Python将以字符串的形式存储在一个变量中,方便后面使用。


例如:

1
2
3
4
5
6
a = input("请输入第一个整数:") #输入变量a的值
b = input("请输入第二个整数:") #输入变量b的值
a = int(a) #将变量a转换为整数型
b = int(b) #将变量b转换为整数型
c = a + b #两数相加赋给c
print("两数之和为:",c) #输出c的值

输出结果为:

1
2
3
请输入第一个整数:2
请输入第二个整数:3
两数之和为: 5

如果去掉上述第3,4行代码,也就是不用int()函数转换变量类型,那么变量c就是变量a和b的简单拼接。


例如:

1
2
3
4
a = input("请输入第一个整数:") #输入变量a的值
b = input("请输入第二个整数:") #输入变量b的值
c = a + b #两数相加赋给c
print("两数之和为:",c) #输出c的值

输出结果为:

1
2
3
请输入第一个整数:2
请输入第二个整数:3
两数之和为: 23

9. 判断语句

构造1:

1
2
if 判断条件:
语句块

构造2:

1
2
3
4
if 判断条件1:
语句块1
else:
语句块2

构造3:

1
2
3
4
5
6
7
8
9
if 判断条件1:
语句块1
elif 判断条件2:
语句块2
...
elif 判断条件n:
语句块n
else:
语句块n+1

10. 循环语句

(1).while语句

构造:

1
2
while 判断条件:
语句块

(2).while-else语句

构造

1
2
3
4
while 判断条件:
语句块
else:
语句块

如果 while 后面的条件语句为 false 时,则执行 else 的语句块。
例如:

1
2
3
4
5
6
count = 0
while count < 5:
print (count, " 小于 5")
count = count + 1
else:
print (count, " 大于或等于 5")

执行结果为:

1
2
3
4
5
6
0  小于 5
1 小于 5
2 小于 5
3 小于 5
4 小于 5
5 大于或等于 5

(3).for语句

构造:

1
2
for 变量 in 序列:
语句块

for循环语句经常与range()函数一起使用,range()函数是Python的内置函数,可创建一个整数列表。


range()函数的语法是:


range([start,]stop[,step])


start:计数从start开始,默认是从0开始。例如,range(5)等价于range(0,5)


stop:计数到stop结束,但不包括stop。例如,range(0,5)是[0,1,2,3,4]


step:步长,默认为1。例如,range(0,5)等价于range(0,5,1)

(4).for-else语句

构造:

1
2
3
4
for 变量 in 序列:
语句块
else:
语句块

例如:

1
2
3
4
for x in range(6):
print(x)
else:
print("Finally finished!")

输出结果:

1
2
3
4
5
6
7
0
1
2
3
4
5
Finally finished!

11. Python基本数据类型-list-tuple-dict-set

title

(1).列表list

title

(2).元组tuple

Python的元组与列表类似,不同之处在于元组的元素不能修改;


元组使用小括号(),列表使用方括号[];


元组创建很简单,只需要在括号中添加元素,并使用逗号(,)隔开即可。

(3).字典dict

title

(4).集合set

title

python3进阶语法

1. 推导式

Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。


Python支持各种数据结构的推导式:

(1).列表(list)推导式

列表推导式格式为:

1
2
3
4
5
6
7
[表达式 for 变量 in 列表] 
[out_exp_res for out_exp in input_list]

或者

[表达式 for 变量 in 列表 if 条件]
[out_exp_res for out_exp in input_list if condition]

out_exp_res:列表生成元素表达式,可以是有返回值的函数。


for out_exp in input_list:迭代 input_list 将 out_exp 传入到 out_exp_res 表达式中。


if condition:条件语句,可以过滤列表中不符合条件的值。

实例1:

1
2
3
names = ['Bob','Tom','alice','Jerry','Wendy','Smith']
new_names = [name.upper() for name in names if len(name)>3] # 过滤掉长度小于或等于3的字符串列表(if语句),并将剩下的转换成大写字母返回(upper函数)到列表
print(new_names) # 打印列表

输出结果为:

1
['ALICE', 'JERRY', 'WENDY', 'SMITH']

实例2:

1
2
a = [i.__float__() for i in range(0,20) if i % 3 == 0]  # 计算0到20间可以被3整除的数,然后以float类型返回到列表
print(a) # 打印列表

输出结果为:

1
[0.0, 3.0, 6.0, 9.0, 12.0, 15.0, 18.0]

(2).字典(dict)推导式

字典推导基本格式:

1
2
3
4
5
{ key_expr: value_expr for value in collection }



{ key_expr: value_expr for value in collection if condition }

实例1:

1
2
3
4
listdemo = ['Google','baidu', 'tencent']
# 将列表中各字符串值为键,各字符串的长度为值,组成键值对 然后返回到newdict
newdict = {key:len(key) for key in listdemo}
print(newdict) # 打印该字典

输出结果为:

1
{'Google': 6, 'baidu': 5, 'tencent': 7}

实例2:

1
2
dic = {x: x**2 for x in (2, 4, 6)}
print(dic)

输出结果为:

1
{2: 4, 4: 16, 6: 36}

(3).集合(set)推导式

集合推导式基本格式:

1
2
3
4
5
{ expression for item in Sequence }



{ expression for item in Sequence if conditional }

实例1:

1
2
setnew = {i**2 for i in (1,2,3)}  # 计算数字 1,2,3 的平方数
print(setnew)

输出结果为:

1
{1, 4, 9}

实例2:

1
2
3
a = {x for x in 'abracadabra' if x not in 'abc'} # 判断不是 abc 的字母并输出
print(a)

输出结果为:

1
{1, 4, 9}

(4).元组(tuple)推导式

元组推导式可以利用 range 区间、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的元组。


元组推导式基本格式:

1
2
3
4
5
(expression for item in Sequence )



(expression for item in Sequence if conditional )

元组推导式和列表推导式的用法也完全相同,只是元组推导式是用 () 圆括号将各部分括起来,而列表推导式用的是中括号 [],另外元组推导式返回的结果是一个生成器对象。
实例:

1
2
3
4
a = (x for x in range(1,10))
print(a)
b = tuple(a)
print(b)

输出结果为:

1
2
<generator object <genexpr> at 0x00000299CE178350>
(1, 2, 3, 4, 5, 6, 7, 8, 9)

2. 三元表达式

Python 中没有其它语言的三元表达式(三目运算符)相关说法,但是有类似的语法。

在 Python 中,三元表达式是一种语法结构,一般被 Python 开发者叫做条件表达式,它的结构如下所示:

1
表达式(1)为 True 执行语句 if 条件表达式(1) else 表达式(1)为 False 执行语句

实例1:

1
2
3
age = 20
cn = "成年" if age >= 18 else "未成年"
print(cn)

输出结果为:

1
成年

(1).返回多个条语句

实例2:

1
2
3
age = 20
cn = "成年","大于18" if age >= 18 else "未成年"
print(cn)

输出结果为:

1
('成年', '大于18')

代码返回一个元组,内容为 (‘成年’, ‘大于18’) ,这里一定注意不要使用分号 ; 否则只返回第一个语句的结果。
实例3:

1
2
3
age = 20
cn = "成年";"大于18" if age >= 18 else "未成年"
print(cn)

输出结果为:

1
成年

(2).三元表达式用于列表推导式

实例4:

1
2
3
4
5
li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
ret = [i for i in li if i % 2 == 0]
print(ret)
ret = [i if i % 2 == 0 else None for i in li]
print(ret)

输出结果为:

1
2
[2, 4, 6, 8, 10]
[None, 2, None, 4, None, 6, None, 8, None, 10]

(3).在函数内部使用三元表达式

有些简单的判定逻辑,可以直接使用三元表达式简化,例如判断传入参数是否为偶数。
例如:

1
2
def even_num(num):
return True if num % 2 == 0 else False

(4).三元表达式与 lambda匿名函数

有时候可以将三元表达式与 lambda 进行结合,让代码变得更加简洁。
实例5:

1
2
3
4
5
6
7
8
9
10
11
max = lambda a, b: a if a > b else b  # 与下面的代码意思相同
'''
def max(a, b):
if a > b:
ret = a
else:
ret = b
return ret
'''
r = max(10, 15)
print(r)

输出结果为:

1
15

(5).三元表达式的嵌套

实例6:

1
2
3
4
# 编写一个三元表达式,首先判断其值大于20,然后在判断是奇数
num = 21
ret = "小于20" if num < 20 else ("奇数" if num % 2 == 1 else "偶数")
print(ret)

输出结果为:

1
奇数

(6).三元表达式的扩展使用

元组条件表达式

实例7:

1
2
3
age = 20
cn = ("未成年", "成年")[age >= 18]
print(cn)

输出结果为:

1
成年

语法格式如下所示

1
(当后面的表达式为假时返回,当后面的表达式为真时返回)[条件表达式]

字典条件表达式

实例8:

1
2
3
age = 20
cn = {False: "未成年", True: "成年"}[age >= 18]
print(cn)

输出结果为:

1
成年

上述两种写法都有一些故弄玄虚,而且代码非常不易阅读所以不建议实战编码时使用

3.Python 断言

(1).python断言定义

Python断言用于判断某个表达式的值,结果为 True,程序运行,否则,程序停止运行,抛出 AssertionError 错误。
实例1:

1
2
3
4
5
def overage18(age):
assert age >= 18, "对不起未满18岁,无法进行游戏"
print("享受欢乐游戏时光")

overage18(15)

输出结果为:

1
AssertionError: 对不起未满18岁,无法进行游戏

断言主要为调试辅助而生,为的是程序自检,并不是为了处理错误,程序 BUG 还是要依赖 try… except 解决。

(2).常用断言函数

assertEqual(a,b,msg=msg):判断两个值是否相等;


assertNotEqual(a,b,msg=msg):上一函数的反义;


self.assertTrue(a,msg=none):判断变量是否为 True;


assertFalse(a,msg=none):同上反义;


assertIsNone(obj=‘’):判断 obj 是否为空;


assertIsNotNone(obj=‘’):同上反义;

4.with-as

(1).Python with…as…是什么

在 Python 中,文件操作,数据库操作,都需要在程序执行完毕进行清理工作,很多时候我们经常忘记手动关闭,因此 Python 集成了一种自动操作,例如文件使用自后,自动释放资源。


上述场景的描述,转换成 Python 语法就是 with…as 语句,即上下文管理器,它在 Python 中实现了自动分配并释放资源。

(2).with-as 语句的语法格式

1
2
3
with 表达式 [as 指定一个变量名]:
代码块
代码块

其中 [ ] 中的内容可以省略,如果使用表示将前文表达式的结果保存到一个变量中。

(3).with-as如何使用

用于文件操作


with…as… 语句初次接触一般是在文件操作中,如果不使用上下文管理器,对一个文件进行操作的代码如下所示:

1
2
3
file = open("./demo.txt") # 手动打开
data = file.read()
file.close() # 手动关闭

下面是 with…as… 版本的代码:

1
2
with open("./demo.txt") as file:
data = file.read()

如果不使用上述语句,想要完成一个完善的代码段,需要使用 try…except… 语句进行操作。

1
2
3
4
5
file = open("./demo.txt")
try:
data = file.read()
finally:
file.close()
Contents
  1. 1. Python3 基础语法
    1. 1.1. 1. 编码
    2. 1.2. 2. 标识符
    3. 1.3. 3. 注释
    4. 1.4. 4. 行与缩进
    5. 1.5. 5. 多行语句
    6. 1.6. 6. 数字(NUMBER)类型
    7. 1.7. 7. 字符串(String)
      1. 1.7.1. 1.Python 中单引号 ‘ 和双引号 “ 使用完全相同。
      2. 1.7.2. 2.使用三引号(‘’’ 或 “””)可以指定一个多行字符串。
      3. 1.7.3. 3. 转义符 \。
      4. 1.7.4. 4. 反斜杠可以用来转义,使用 r 可以让反斜杠不发生转义。 如 r”this is a line with \n” 则 \n 会显示,并不是换行。
      5. 1.7.5. 5.按字面意义级联字符串,如 “this “ “is “ “string” 会被自动转换为 this is string。
      6. 1.7.6. 6.字符串可以用 + 运算符连接在一起,用 * 运算符重复。
      7. 1.7.7. 7.Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。
      8. 1.7.8. 8.Python 中的字符串不能改变。
      9. 1.7.9. 9.Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。
      10. 1.7.10. 10.字符串的截取的语法格式如下:变量[头下标:尾下标:步长]
    8. 1.8. 8. 输入和输出
      1. 1.8.1. 1.输出
      2. 1.8.2. 2.输入
    9. 1.9. 9. 判断语句
    10. 1.10. 10. 循环语句
      1. 1.10.1. (1).while语句
      2. 1.10.2. (2).while-else语句
      3. 1.10.3. (3).for语句
      4. 1.10.4. (4).for-else语句
    11. 1.11. 11. Python基本数据类型-list-tuple-dict-set
      1. 1.11.1. (1).列表list
      2. 1.11.2. (2).元组tuple
      3. 1.11.3. (3).字典dict
      4. 1.11.4. (4).集合set
  2. 2. python3进阶语法
    1. 2.1. 1. 推导式
      1. 2.1.1. (1).列表(list)推导式
      2. 2.1.2. (2).字典(dict)推导式
      3. 2.1.3. (3).集合(set)推导式
      4. 2.1.4. (4).元组(tuple)推导式
    2. 2.2. 2. 三元表达式
      1. 2.2.1. (1).返回多个条语句
      2. 2.2.2. (2).三元表达式用于列表推导式
      3. 2.2.3. (3).在函数内部使用三元表达式
      4. 2.2.4. (4).三元表达式与 lambda匿名函数
      5. 2.2.5. (5).三元表达式的嵌套
      6. 2.2.6. (6).三元表达式的扩展使用
    3. 2.3. 3.Python 断言
      1. 2.3.1. (1).python断言定义
      2. 2.3.2. (2).常用断言函数
    4. 2.4. 4.with-as
      1. 2.4.1. (1).Python with…as…是什么
      2. 2.4.2. (2).with-as 语句的语法格式
      3. 2.4.3. (3).with-as如何使用
|