Python基础与应用
本文目录 8 个章节
Python基础与应用
创建时间:2020/12/23 17:36
- Python基础与应用
- 基本运行机制
- 关于
- 关于sys.path
- 类与self
- 命令行参数
- 应用
- 修改文件
- Ref
- 基本运行机制
基本运行机制
而 Python属于脚本语言,动态的逐行解释运行。也就是从脚本第一行开始运行,没有统一的入口。使用缩进对齐组织代码的执行,所有没有缩进的代码(非函数定义和类定义),都会在载入时自动执行。
关于
__name__,__main__.py&__init__.py
当脚本作为单个文件直接运行是,
__name__为'__main__'当脚本作为模块导入使用时,
__name__为这个模块的名字
if __name__ == '__main__'则表示当前脚本直接执行,而非被其他模块调用时,运行后面的代码。
这为测试驱动开发提供了极好的支持,我们可以在每个模块中写上测试代码,这些测试代码仅当模块被Python直接执行时才会运行,代码和测试完美的结合在一起。
假设有如下一个包
string str1 = "test";
string str2 = "test";
关于
__init__.py如果目录中包含了__init__.py时,当用 import 导入该目录时,会执行__init__.py里面的代码。
目录中所有 py 文件的内容都为:
print(__name__)
在a文件夹的父文件夹中
- 执行命令:python -c “import a.b.c”,输出结果:
string str1 = "test";
string str2 = "test";
作为模块导入,__name__为这个模块的名字,导入时,__init__.py中的代码会被执行
- 执行命令:python -m a.b,输出结果:
string str1 = "test";
string str2 = "test";
b作为一个模块被执行,__init__.py中的代码会被执行,模块中的__main__.py作为入口执行,其中的__name__参数值为__main__
- 执行命令:python a\b,输出结果:
string str1 = "test";
string str2 = "test";
执行a\b这个包,即运行a\b这个包的__main__.py,不会执行__init__.py,其中__main__.py的__name__参数值为__main__
关于sys.path
sys.path中的第一个元素为当前工作路径。
脚本作为一个模块运行时,即执行python -m package,sys.path的第一个参数为执行命令行的路径。当直接执行脚本时,sys.path的第一个参数为相应脚本的路径。
类与self
string str1 = "test";
string str2 = "test";

命令行参数
-c command- 执行 command 中的 Python 代码。-m <module-name>- 在 sys.path 中搜索指定名称的模块并将其内容作为 main 模块来执行。
使用 sys 的 sys.argv 来获取命令行参数: sys.argv[0] 表示脚本名,args[1:]后面的才是真正命令行输入的参数。
string str1 = "test";
string str2 = "test";
getopt模块是专门处理命令行参数的模块,用于获取命令行选项和参数,也就是sys.argv。更多参见: https://blog.csdn.net/ouyang_peng/article/details/79390920
应用
修改文件
修改某一行
string str1 = "test";
string str2 = "test";
替换字符串,直接写入源文件
string a = "test";
string tmp = "est";
string b = "t" + tmp;
Console.WriteLine(string .ReferenceEquals(str1, str2));
写入新文件后再替换源文件
string a = "test";
string tmp = "est";
string b = "t" + tmp;
Console.WriteLine(string .ReferenceEquals(str1, str2));
正则表达式 re 的应用
string a = "test";
string tmp = "est";
string b = "t" + tmp;
Console.WriteLine(string .ReferenceEquals(str1, str2));
输出
string a = "test";
string tmp = "est";
string b = "t" + tmp;
Console.WriteLine(string .ReferenceEquals(str1, str2));
string a = "test";
string tmp = "est";
string b = "t" + tmp;
Console.WriteLine(string .ReferenceEquals(str1, str2));
Ref
https://www.cnblogs.com/lvxiuquan/archive/2012/07/09/2582437.html