学生网站建设实训总结,3g门户首页,微信网站开发之前要学会什么,哪个公司做网站最好深圳作者#xff1a;老齐对于初学Python者#xff0c;除了看书(《跟老齐学Python#xff1a;轻松入门》或者《Python大学实用教程》#xff0c;均为电子工业出版社出版)、或者看视频(网易云课堂、CSDN上均有老齐的视频课程)#xff0c;还要进行专题性总结。比如本文#xff0… 作者老齐对于初学Python者除了看书(《跟老齐学Python轻松入门》或者《Python大学实用教程》均为电子工业出版社出版)、或者看视频(网易云课堂、CSDN上均有老齐的视频课程)还要进行专题性总结。比如本文就是要帮助学习者对变量和赋值这两个非常基本、几乎无处不在的内容作为一个专题进行总结。对象Python语言既能够实现面向过程也能够实现面向对象编程。而面向对象是当前软件开发的主流编程思想。在我的两本书中我都强调了面向对象——不要认为这种编程思想不适用于初学者更不要认为它有多难。并且Python语言中已经有这样一个明确的概念万物皆对象不论是数字、整数、函数、类等等都是对象。Python语言中的对象可以理解为语言中的“实际物体”它一经创建存储器中就开辟出一个空间保存它因而也就有了一个内存地址。比如 id(3.14)4312572400这里返回的十进制数字就代表了存储器为浮点数对象3.14分配的内存地址。另外Python中的任何对象都有类型。在Python中类型就是类。在Python创立之初这两个没有统一后来将“类”和“类型”统一了起来这样我们就可以把每一个具体的数据看成是某个“类”的实例而那个“类”就是这个实例的“类型”。比如 type(3.14)返回值显示3.14是float类的实例也就是float类型。下面自定义一个类然后创建实例再看看那个实例的类型 class Book:... book 跟老齐学Python轻松入门... my_book Book() type(my_book)除了返回的类的具体内容不同之外Book()(注意这是对象my_book引用了这个对象所以也可以说是my_book对此的详细说明请阅读本文后续内容)和3.14都是所对应类的实例——返回值格式相同因此它们也都是所对应类的那种“类型”。变量在Python中使用变量非常方便可以用“召之即来挥之即去”形容也就是不需要“创建”变量用的时候信手拈来。 int a File , line 1 int a ^SyntaxError: invalid syntax在有些语言里面比如Java要使用某个变量必须先创建它。但是如果把这个习惯搬到Python中就如同上面操作那样会报错。另外还要注意Python中的变量不是对象它不能单独存在。 aTraceback (most recent call last): File , line 1, in NameError: name a is not defined上面的演示就是想用一个变量a但是只是把它单独放在那里就如同在数学上“假设变量a”这样做是不行的。在Python中变量必须和某个对象关联起来。 a 2 id(a)4308314816 id(2)4308314816在上面的示例中a2就是将变量a与对象2关联了起来。注意这里的变量a不是像容器那样将对象2放入其中而是如同标签那样贴到了对象2上于是乎通过这个标签就可以找到那个对象。id(a)并不是返回变量a的内存地址——它不是对象而是返回了它所引用的对象2的内存地址。再参考后面的id(2)可以看到两者内存地址一样也就是说证明了a这个变量引用的对象就是2。但是如果在交互模式中做下面的操作就令人匪夷所思了。 a 1.23 id(1.23)4312572400 id(a)4311689008按照前面的说法这个怎么解释再解释这个之前先来看下面的操作。创建一个文件比如命名为idvalue.py然后在文件中写入如下代码#coding:utf-8a 1.23id_value1 id(a)id_value2 id(1.23)print(fid(a): {id_value1})print(fid(1.23): {id_value2})if id_value1 id_value2: print(id() 返回值相同)这段程序跟前面交互模式里面的一样。但是请注意接下来的事情。保存文件之后执行它。% python3 idvalue.pyid(a): 4327795888id(1.23): 4327795888id() 返回值相同看执行结果。这里得到的a和1.23的内存地址居然是一样的。神奇吗要解释这种神奇话就有点长了要从交互模式的特点开始说起。交互模式是我们学习和做简单练习的好地方但是它有一个缺点“记忆力太差”每一行执行完毕就会将该行“忘记”下一行又从头开始。当执行了a 1.23之后本来内存中已经创建了1.23这个对象但是当再次执行id(1.23)时因为两个不完全一样交互模式的解析器忘记了前面的1.23于是乎又在存储器中重新创建了id(1.23)中的1.23对象。可为什么a 2不如此呢因为Python还有一个习惯把-256~256这些整数在内存中有“常住户口”。 b 256 id(b)4308322944 id(256)4308322944 c 257 id(c)4312572688 id(257)4312572624但是如果在一个程序文件里Python解析器的“记忆力”就正常了不会重复创建同样的对象——当然如拷贝等有意为之的除外。至此我们已经明确Python中的变量和对象之间是引用关系正式因为这种引用关系让Python中实现某些操作就非常容易了。 first 1 second 2 first, second second, first first2 second1在这个示例中变量first引用了1second引用了2如果想把这两个变量引用的对象对调一下在Python里面使用first, second second, first。这是多么简单、优雅、直接呀。如果在Java里面就麻烦了——学过C/C/Java等语言的同学试一试吧。由此我们可以放胆说Python简单、优雅。还是因为“引用”一个对象可以被多个变量引用就相当于一个物体上可以贴多个标签那样。 a b 3.14 a3.14 b3.14“变量引用对象”这个思想还可以扩展到函数的参数。有的人习惯把函数的参数弄很多名称比如形参、实参等并且进行区分。在Python语言中它们本质上都是变量只不过是在函数作用于里面使用的变量。当定义函数的时候虽然那个变量也没有引用对象但因为是定义函数这个函数并没有执行所以一个没有引用对象的变量是许可存在的。 book [python,] def my_book(b):... b.append(feature engineering)... return b... my_book(book)[python, feature engineering] book[python, feature engineering]上面代码中第1行创建了一个列表。第2行开始创建了一个函数参数是b——这时候称为“形参”即形式上的参数。其实因为这个函数并没有调用所以那个变量b可以认为是占位符可以单独存在不需要引用任何对象。后面调用这个函数my_book(book)。这里我们通常形象而简要地说“将boo传给函数”。这句话其实不是很严谨但它因为形象简短所以被广为使用。如果严谨地说——未免啰嗦了调用这个函数后发生的是b引用了变量book所引用的对象[python,]。从后面的执行结果中可以看出因为函数内和函数外不同变量引用的对象都是同一个所以会发生同样的变化。对于变量最后要强调的就是命名习惯非数字开头字母都小写用有意的单词或者单词组合多个单词之间用_连接避免使用与下列项目冲突的单词内置类型、内置函数、关键词以下是列出Python关键词的方法 import keyword keyword.kwlist[False, None, True, and, as, assert, async, await, break, class, continue, def, del, elif, else, except, finally, for, from, global, if, import, in, is, lambda, nonlocal, not, or, pass, raise, return, try, while, with, yield]或者 help(keywords)Here is a list of the Python keywords. Enter any keyword to get more help.False class from orNone continue global passTrue def if raiseand del import returnas elif in tryassert else is whileasync except lambda withawait finally nonlocal yieldbreak for not有一种常见情况如下所示 list [1,2,3] list(laoqi)Traceback (most recent call last): File , line 1, in TypeError: list object is not callable这就是因为本来的内置对象类型list或者内置函数的名称已经被 list [1,2,3]占用了后面再使用list指的就是这个列表。所以第二行的操作中会报错。赋值在理解变量和对象关系的基础上理解“赋值”或“赋值语句”就简单多了从本质上讲赋值就是变量与某对象建立引用关系只不过这里不是如前面所说的某个直接的对象这里的对象可能是经过计算之后得到的所以先要知道“表达式”。所谓表达式就是对象间用操作符连接组成一个有意义的式子。 1 23 python langpythonlang以上演示的都是表达式一般而言表达式要返回一个对象。如果将这个对象再被变量引用就成为了“赋值”。 py python lang pypythonlang当然前面出现的诸如a 2也都是赋值语句。在赋值语句中的作用于数学中的等号有很大区别它表示将变量与对象之间建立引用关系。 n 1 n n 1 n2对于表达式n n 1这里的如果是数学中的意义那么就会出现01。对于n n 1这种操作还可以写成 n 1 n3这种写法称为自增同样减、乘、除也都有类似的操作。对于赋值必须要说明的是Python3.8中新增的功能海象运算符。 n len(python) if n 10:... print(fthe word length is: {n})...the word length is: 6在第二行开始的条件语句中要使用n必须要要在前面通过赋值语句获得。Python3.8的海象赋值运算符把上面的赋值那一行和第二行融合起来让代码更简洁。 if (i : len(python)) 10:... print(fthe word length is: {n})...the word length is: 6关于海象运算符本微信公众号有专门文章阐述请参阅《Python3.8新语法海象运算符》最后要强调的是Python中函数、类也都是对象它们同样能够用于赋值语句。 lam lambda x: x3 lam(4)7 q lam q(4)7第一行创建了一个lambda函数这个函数对象用变量lam引用也是赋值。注意第三行只有名称才引用对象如果是lam()是试图要执行lam引用的对象所以q lam才是赋值或者说变量q也引用了这个lambda函数。本文对变量和赋值做了专题总结供初学者复习以便加深对相关知识的理解。专注于软件和AI的公众号老齐教室觉得好看就点这里???