
Python之旅
文章平均质量分 50
youngzhiyong
这个作者很懒,什么都没留下…
展开
-
Python之旅——二维列表陷阱
二维列表陷阱有时候,我们会像下列方式,创建一个n*n的二维矩阵,并都初始化为0:n = 3grid = [[0] * n] * nprint(grid)代码输出:[[0, 0, 0], [0, 0, 0], [0, 0, 0]]看到我们创建的二维矩阵,并都初始化为0了。高兴的接着往下对二维矩阵执行修改操作:n = 3grid = [[0] * n] * nprint(grid)grid[1][1] = 6print(grid)代码输出:[[0, 0, 0], [0, 0,原创 2021-02-19 21:37:48 · 214 阅读 · 0 评论 -
Python之旅——类的继承属性搜索规则
类的继承属性搜索规则基于LEGB搜索规则,并根据类的继承关系树,自底向上,自左向右搜索,直到找到第一个属性为止。(如果未找到,抛出异常)图片来自:《Learning Python 5th Edition》一书Figure 26-1例如:C1继承C2和C3两个类,那么C1类的对象I1对某个属性的访问,搜索路径I1.name : I1;I1.x : I1->C1;I1.y : I1->C1;I1.z : I1->C1->C2;I1.w : I1-原创 2021-05-09 23:01:49 · 221 阅读 · 0 评论 -
Python之旅——类相关变量
类相关变量类变量类的变量,类所在的模块被加载时,初始化类变量及其所引用的对象。类变量引用可变类型1.修改可变类型对象成员类方式class Demo(object): a = [1, 2, 3] # list为可变类型if __name__ == "__main__": demo1 = Demo() Demo.a[1] = 88 # 类方式修改对象成员 demo2 = Demo() print("demo1.a=", demo1.原创 2021-04-18 11:37:39 · 162 阅读 · 2 评论 -
Python之旅——变量赋值
变量赋值python中,变量是对象的引用。变量赋值,即将变量指向值对象,对值对象的引用。值对象的分类:不可变对象可变对象值对象为不可变对象不可变对象,通俗的讲,就是不可以改变对象的内容。比如:数字,字符串,元祖tuple。变量指向的值对象不可变,但变量的指向可变,即可以改为指向新的值对象。1. 值对象为数字a = 10b = aprint("a addr: 0x%x val: %d" % (id(a), a))print("b addr: 0x%x val: %d" % (id(原创 2021-01-14 00:12:00 · 148 阅读 · 0 评论 -
Python之旅——模块加载
模块加载模块加载时,主要完成以下动作:在当前模块中加载由import yy或者from xx import yy导入的未被其他模块导入过的模块;对模块中的类或者函数定义进行语法检查(ps:检查类属性和成员函数,不检查函数体),创建类定义对象和函数定义对象;执行模块中的外层语句;将类定义对象、函数定义对象和模块内的对象输出到该模块对应的二进制文件(.pyc为后缀的模块文件)。注:输出到二进制文件有以下两个好处避免模块被重复加载;多次运行程序,若模块未变化,将不再做语法检查,也不创建模块二原创 2021-04-12 23:50:16 · 357 阅读 · 1 评论 -
Python之旅——列表扩展
列表扩展+ :将加号两边的列表进行拼接得到一个新的列表(重新分配的内存空间)+=:将+=右边的列表追加到左边的列表,原地址空间首地址保持不变listA.append(listB):将listB列表作为一个元素添加到listA列表尾(仅占用listA一个元素空间),原地址空间首地址保持不变extend等价于+=+扩展列表listA = [1, 2, 3]listB = [4, 5, 6, 7]print(listA, "addr:0x%x" % id(listA))print(list原创 2021-02-17 21:25:10 · 761 阅读 · 1 评论 -
Python之旅——字符串与列表间转换
字符串与列表间转换字符串分割成列表sentence = "Hello world!"words = sentence.split()print(type(words))print(words)代码输出:<class 'list'>['Hello', 'world!']字符串列表拼接成字符串words = ["hello", "python!"]sentence = "-".join(words)print(type(sentence))print(sentence原创 2021-02-16 22:01:45 · 158 阅读 · 0 评论 -
Python之旅——列表深浅拷贝
列表深浅拷贝将列表中的值,拷贝到新的容器。先思考一下,采用下列方式,是否能达到拷贝列表的目的?nums = [1, 2, 3]copied_nums = numsprint(f"nums={nums}")print(f"copied_nums={copied_nums}")代码输出:nums=[1, 2, 3]copied_nums=[1, 2, 3]上述仅仅是,将copied_nums变量与nums变量都指向了相同的列表对象。如若不信,请查看下列代码:nums = [1, 2,原创 2021-02-16 19:29:34 · 195 阅读 · 2 评论 -
Python之旅——字典映射(表驱动)实现switch功能
字典映射(表驱动)实现switch功能本文介绍python中可以使用字典的方式实现和C/C++的表驱动相同的功能,并且代码更加简洁。c/c++的表驱动代码:#include <map>#include <iostream>using namespace std;void foo1(int key){ cout << "foo1:" << key << endl;}void foo2(int key){ c原创 2021-01-13 23:03:13 · 1075 阅读 · 0 评论 -
Python之旅——函数传参
函数参数传值更多文章,请移步☞ https://gitee.com/youngzhiyong/bookPython一切皆对象!!!函数参数传值,函数形参作为对象的引用(形参指向实参对象)。a.常量对象作为函数参数常量对象是一个不可变的对象。当对形参再次赋值时,是形参变量指向一个另外的对象。def update(num): print("num_addr: 0x%x" % id(num), f"num_value:{num}") # id函数是输出对象地址 num = 5原创 2020-09-09 22:06:33 · 135 阅读 · 0 评论 -
python之旅——跨平台文件编码
文件编码1. python代码文件编码a. Python中的默认编码格式是ASCII格式,在未修改编码格式时,python2将无法解析中文编码。而python3可以进行正确的解析。b. 在python代码文件开头,使用下面两种方式之一标识当前代码文件的编解码(utf或UTF均可)#coding:utf-8#-\*-coding:utf-8-\*-2. 输出文本文件编码 with open("test.txt", "w") as fd: fd.write(test_str)原创 2020-08-23 21:11:10 · 229 阅读 · 0 评论 -
Python之旅——格式化输出
一、基础篇4. 格式化输出参数 % round formata. %格式化输出的方式和C语言中的printf中的类似。b. round是入参进行四舍五入,但可能会受到计算机能表示浮点数精度影响。c. format的格式化输出比较灵活,可以使用{}或者{n}的方式输出。d. 多参数时,%格式化输出只能按照顺序输出;format的方式,可以根据指定的参数位置进行输出。代码示例:a. print中使用%...原创 2018-05-04 11:52:07 · 275 阅读 · 0 评论 -
Python之旅——“a = a + b b = a - b “ VS “a, b = a + b, a - b“
一、基础篇3. "a = a + b b = a - b " VS "a, b = a + b, a - b"a. 二者输出结果肯定不相同。b. 第一个利用C/C++的思维进行思考即可;第二个是利用python中的元组打包和序列解包的思维思考。假设a为10,b为8,示例解析:a. a = a + b b = a - ba = 10b = 8print("Add first")a ...原创 2018-05-04 11:50:25 · 268 阅读 · 0 评论 -
Python之旅——else语句
一、基础篇2. Python的else语句异同点:a. if与else语句的使用和C/C++/Java等语言的使用一致;b. Python中存在循环体for/while与else的结合,而C/C++/Java中没有此用法。但类似于C/C++/Java中的if...else{throw...}(不满足if条件,else抛出异常之类的)。执行原理: for/while语句中的循环条件正常结束(包括...原创 2018-05-04 11:49:16 · 150 阅读 · 0 评论 -
Python之旅——全局变量&局部变量
一、基础篇1.全局变量 VS 局部变量a. 全局变量在整个文件内有效;b.局部变量在函数内有效;c.当全局变量和局部变量同名,局部变量有效。若定义了全局变量,则可在函数内直接使用全局变量。a = 1b = [23, 98]def func():print("a = ", a) #使用全局变量print("b = ", b)b[0] = 9print("b =...原创 2018-05-04 11:45:17 · 323 阅读 · 0 评论