前言
本次学习过程中使用的为Python3
,由于Python2
与Python3
存在一定的语法差异,以下语法均为Python3
格式
- 通常一条语句以换行符结束,不需要结束符(
;
)
print("Holle Word!")
- 一行多条语句需使用
;
分隔
name = "dark";print("name is ", name)
- 一行语句可通过连接符
\
分为多行,若包含则不需要连接符
info = name + \
age
languages = ["Python", "Java",
"Go"]
- 代码块以缩进的方式编写,不需要 { 和 } 包裹
if True:
print("True")
缩进对空格数无要求,但代码块内每条语句必须对齐
标识符
- 由字母、数字及下划线组成,但不能以数字开头
- 区分大小写
- 以下划线开头具有特殊意义
注释
- 单行注释以
#
开头
# 单行注释
- 多行注释以
'''
或"""
包裹
'''
多行注释1
多行注释2
'''
"""
多行注释3
多行注释4
"""
输入&输出
使用input
等待并获取用户的输入
input("请输入:")
参数为输入提示,当读取到换行符\n
(Enter)时视为结束
使用print
输出
- 可通过参数
end
指定结尾,默认为换行符\n
#不换行输出 language is Python
print("language is", end=" ")
print("Python")
- 当输出多个值时,可通过参数
sep
指定分隔符,默认为空格
# 结果为1-2-3
print(1, 2, 3, sep="-")
结构
模块
定义了变量和函数,后缀为.py
的文件即为模块
Python作为脚本语言,没有入口函数(main
),可通过使用系统标识__name__
来实现
- 作为主模块时(程序由当前模块运行),其值为 __main__
- 作为引用模块时(程序由其他模块运行,当前模块被导入),其值为 模块名(不含后缀
.py
) 或 包名
if __name__ == "main":
print("以当前模块启动")
else:
print("被其他模块引用")
包
类似于Java中的package
,本质是目录结构
可于包中创建定义文件__init__.py
,编写初始化代码
当包或包内模块被导入时,__name__
的值为包名
导入
通过import
,在sys.path
中查找并导入
Python会判断重复导入,仅首次有效
标识名相同导入将进行覆盖
import [包名.]模块名[ as 别名]
导入指定模块,若未定义别名,则需使用完整的名称([包名.]模块名)调用模块内容from 包名 import 模块名1[ as 别名][, 模块名2[ as 别名]...]
从指定包中导入模块,可直接使用模块名调用内容from 模块名 import 标识符1[ as 别名][, 标识符2[ as 别名]...]
从指定模块中导入变量/函数/类等,可直接使用标识符名from 包名 import *
查找指定包中__init__.py
文件,导入其__all__
定义的模块
#使用"import *"时,导入当前包下module1模块和module2模块
__all__ = ["module1", "module2"]
#使用"import *"时,导入sys模块(非当前包下的模块需导入)
import sys
__all__ = ["sys"]
Python3
导入默认为绝对路径,可通过在from
后指定层级关系实现相对路径导入,.
表示当前层级,..
表示父级,以此类推
#导入当前路径下module1
from . import module1
#导入同级路径packege2下module2
from .. packege2 import module2
由于主模块的 __name__
为__main__,Python
将其视为根路径,故作为主模块时无法使用相对路径的方式导入
通过dir([标识名称])
函数可查看指定标识中的所有定义名称
import sys
# ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'sys']
print(dir())