diff --git a/0_python/1_Basics.ipynb b/0_python/1_Basics.ipynb index c436b52..e933749 100644 --- a/0_python/1_Basics.ipynb +++ b/0_python/1_Basics.ipynb @@ -8,15 +8,6 @@ ] }, { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "a = 10\n" - ] - }, - { "cell_type": "markdown", "metadata": {}, "source": [ @@ -279,7 +270,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "0?这是由于分子和分母都是整数,但是结果是一个浮点数,因此 返回整数值,通过将分子或分母更改为浮点型,可以获得正确的答案。" + "Python3版本之后,自动讲整数的除法转换成浮点数,这样和人类的直觉比较一致。" ] }, { @@ -1007,7 +998,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.8" + "version": "3.6.9" } }, "nbformat": 4, diff --git a/0_python/2_Print_Statement.ipynb b/0_python/2_Print_Statement.ipynb index c269bdc..0b142cb 100644 --- a/0_python/2_Print_Statement.ipynb +++ b/0_python/2_Print_Statement.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Print 语句" + "# Print 函数" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "**print** 语句可以用下列不同的方式使用。\n", + "`print` 是Python内置的一个函数,可以用下列不同的方式使用。\n", "\n", " - print(\"Hello World\")\n", " - print(\"Hello\", )\n", @@ -87,7 +87,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "字符串可以分配给变量 _string1_ 和string2,使用print语句时可以调用。" + "字符串可以分配给变量 _string1_ 和string2,使用`print`语句时可以调用。" ] }, { @@ -175,7 +175,7 @@ " - %x -> Hexadecimal\n", " - %e -> exponential\n", " \n", - "这可以用于print语句本身内部的转换。" + "这可以用于`print`函数本身内部的转换。" ] }, { @@ -579,7 +579,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.8" + "version": "3.6.9" } }, "nbformat": 4, diff --git a/0_python/3_Data_Structure_1.ipynb b/0_python/3_Data_Structure_1.ipynb index 1640b56..097bbb6 100644 --- a/0_python/3_Data_Structure_1.ipynb +++ b/0_python/3_Data_Structure_1.ipynb @@ -591,7 +591,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "。在一个有字符串作为元素的列表中,**max( )** 和 **min( )** 是可以应用的。**max( )** 会返回一个ASCII码最高的元素而最低的元素会在使用**min( )** 返回。注意,每次只考虑每个元素的第一个索引,如果它们的值相同,则考虑第二个索引,依此类推。" + "在一个有字符串作为元素的列表中,**max( )** 和 **min( )** 可以使用。**max( )** 会返回一个ASCII码最大的元素而最小的元素会在使用**min( )** 返回。注意,每次只考虑每个元素的第一个索引,如果它们的值相同,则考虑第二个索引,依此类推。" ] }, { @@ -1213,7 +1213,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "大多数新的python程序员都会犯这个错误。考虑以下," + "大多数新的python程序员都会犯这个错误,即对象的赋值和拷贝的差异。考虑以下的例子:" ] }, { @@ -1292,7 +1292,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "虽然没有对listb执行任何操作,但它也发生了变化。这是因为您将lista的内存空间分配给了listb。那么如何解决这个问题呢?\n", + "虽然没有对listb执行任何操作,但它也发生了变化。这是因为您将lista、listb指向相同的内存空间。那么如何解决这个问题呢?\n", "\n", "如果您还记得,在切片中我们已经看到parentlist[a:b]从父列表返回一个起始索引a和结束索引b的列表,如果a和b没有被提及,那么默认情况下它会考虑第一个和最后一个元素。我们在这里使用相同的概念。通过这样做,我们将lista的数据作为变量分配给listb。" ] @@ -1366,6 +1366,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "还有其他什么方法能够拷贝一个对象到一个新的变量名字?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "## 2. 元组" ] }, @@ -1373,7 +1380,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "元组与列表相似,但唯一大的区别是列表中的元素可以更改,而元组中的元素不能更改。把元组想象成对特定的东西为True,而对其他任何值都不为True。为了更好地理解,请回忆**divmod()** 函数。" + "元组与列表相似,但唯一大的区别是列表中的元素可以更改,而元组中的元素不能更改。为了更好地理解,请回忆**divmod()** 函数。" ] }, { @@ -1995,7 +2002,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.8" + "version": "3.6.9" } }, "nbformat": 4, diff --git a/0_python/3_Data_Structure_1_EN.ipynb b/0_python/3_Data_Structure_1_EN.ipynb index 0d4bd2c..005f77f 100644 --- a/0_python/3_Data_Structure_1_EN.ipynb +++ b/0_python/3_Data_Structure_1_EN.ipynb @@ -1991,7 +1991,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.8" + "version": "3.6.9" } }, "nbformat": 4, diff --git a/0_python/4_Data_Structure_2.ipynb b/0_python/4_Data_Structure_2.ipynb index e3f6aef..659bfba 100644 --- a/0_python/4_Data_Structure_2.ipynb +++ b/0_python/4_Data_Structure_2.ipynb @@ -799,7 +799,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "字典更像数据库,因为在这里您可以用用户定义的字符串索引特定的序列。" + "字典更像数据库,因为在这里你可以用用户定义的字符串索引特定的序列。" ] }, { @@ -1172,7 +1172,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.8" + "version": "3.6.9" } }, "nbformat": 4, diff --git a/0_python/5_Control_Flow.ipynb b/0_python/5_Control_Flow.ipynb index e0b6dae..ddfcb6e 100644 --- a/0_python/5_Control_Flow.ipynb +++ b/0_python/5_Control_Flow.ipynb @@ -685,7 +685,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.8" + "version": "3.6.9" } }, "nbformat": 4, diff --git a/0_python/6_Function.ipynb b/0_python/6_Function.ipynb index 5f3dfe5..410eeb7 100644 --- a/0_python/6_Function.ipynb +++ b/0_python/6_Function.ipynb @@ -11,14 +11,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "在大部分时候,在一个算法中,语句是不断重复的,一次又一次地执行相同的语句是一项乏味的工作,而且会消耗大量的内存,效率不高。这个时候我们就需要函数。" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "这是一个函数的基本语法" + "在大部分时候,在一个算法中,需要重复执行一组语句,如果每次都重复写出来,不仅乏味而且编程效率比较低,降低程序的可读性。为了将重复的执行抽象出来,可使用函数将一组操作封装成一个整体,给一个名称和参数列表作为可变量的输入。Python中函数的定义为:" ] }, { @@ -41,7 +34,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "将上面的语法理解为,定义了一个名为“funcname”的函数,它接受“arg1,arg2,…argN”的论点。函数被记录为“文档字符串”。函数在执行语句后返回一个“值”。" + "将上面的语法理解为,定义了一个名为“funcname”的函数,它接受“arg1,arg2,…argN”的参数。函数在执行语句后返回一个“值”。" ] }, { @@ -109,7 +102,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**firstfunc()** 每一次只打印一个人的消息。我们可以让我们的函数 **firstfunc()** 接受参数,该参数将存储名称然后打印相应地接受名词。为了这样做我们需要像所示的那样在函数内添加一个参数。" + "**firstfunc()** 每一次只打印一个人的消息。我们可以让我们的函数 **firstfunc()** 接受参数,该参数将存储名称然后打印相应地接受字符串。为了这样做我们需要像所示的那样在函数内添加一个参数。" ] }, { @@ -734,7 +727,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "这些小函数没有使用任何名称定义,只携带一个表达式,返回其结果。Lambda函数在操作列表时非常方便。这些函数由关键字**lambda**定义,后面跟着变量、冒号和相应的表达式。" + "程序中有时需要临时使用一个简单的函数,单独定义出来比较费事,为了提高编程效率,Python等很多语言引入了`Lambda`函数,这些Lambda函数没有使用任何名称定义,只携带一个表达式,返回的是函数本身(类似函数指针或者函数对象)。Lambda函数在操作列表时非常方便。这些函数由关键字**lambda**定义,后面跟着变量、冒号和相应的表达式。" ] }, { @@ -1067,7 +1060,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.8" + "version": "3.6.9" } }, "nbformat": 4, diff --git a/0_python/7_Class.ipynb b/0_python/7_Class.ipynb index 041a55d..24c42f4 100644 --- a/0_python/7_Class.ipynb +++ b/0_python/7_Class.ipynb @@ -11,7 +11,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Python中的变量、列表、字典等都是对象。不涉及面向对象编程的理论部分,在本教程中对概念进行解释。" + "Python中的变量、列表、字典等其实都是对象。不涉及面向对象编程的理论部分,在本教程中对概念进行解释。" ] }, { @@ -114,7 +114,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "大多数类都有一个名为“\\_\\_init\\_\\_”的函数。这些被称为魔术方法。在这个方法中,你基本上初始化了这个类的变量,或者任何适用于这个方法中指定的所有方法的初始化算法。类中的变量称为属性。" + "大多数类都有一个名为`__init__`的函数。这些被称为魔术方法。在这个方法中,你基本上初始化了这个类的变量,或者任何适用于这个方法中指定的所有方法的初始化算法。类中的变量称为属性。" ] }, { @@ -123,7 +123,7 @@ "source": [ "这有助于简化实例的初始化过程。例如,\n", "\n", - "在不使用魔法方法或被成为构造函数的\\_\\_init\\_\\_ 的情况下,我们必须定义一个**init()** 方法并调用**init()** 函数。" + "在不使用魔法方法或被成为构造函数的`__init__`的情况下,我们必须定义一个**init()** 方法并调用**init()** 函数。" ] }, { @@ -152,16 +152,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "但是当构造函数被定义后,\\_\\_init\\_\\_被调用,这样初始化实例被创建。" + "但是当构造函数被定义后,`__init__`被调用,这样初始化实例被创建。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "我们构造我们的\"FirstClass\"去接受两个变量名称和符号。\n", + "我们构造我们的`FirstClass`去接受两个变量名称和符号。\n", "\n", - "我将会在稍后解释\"self\"。" + "我将会在稍后解释`self`。" ] }, { @@ -181,7 +181,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "现在我们已经定义了一个函数而且添加了\\_\\_init\\_\\_方法。我们可以创建一个名为FirstClass的实例,该实例现在接受两个参数。" + "现在我们已经定义了一个函数而且添加了`__init__`方法。我们可以创建一个名为FirstClass的实例,该实例现在接受两个参数。" ] }, { @@ -599,9 +599,9 @@ "source": [ "就像我们前面看到的全局变量和局部变量一样,即使类也有自己的变量类型。\n", "\n", - "类属性:在方法外部定义的属性,适用于所有实例。\n", + "**类属性**:在方法外部定义的属性,适用于所有实例。\n", "\n", - "实例属性:在方法内部定义的属性,只适用于该方法,并且对每个实例都是唯一的。" + "**实例属性**:在方法内部定义的属性,只适用于该方法,并且对每个实例都是唯一的。" ] }, { @@ -773,23 +773,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "在某些情况下,新类可能具有已定义类以前的所有特征。因此,新类可以“继承”前一个类,并向其添加自己的方法。这称为继承。" + "在某些情况下,新类需要具有已定义类的所有特征。因此,新类可以“继承”前一个类,并向其添加自己的方法,这称为继承。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "考虑类SoftwareEngineer具有薪水的方法。" + "考虑类Person类具有薪水的方法。" ] }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ - "class SoftwareEngineer:\n", + "class Person:\n", " def __init__(self,name,age):\n", " self.name = name\n", " self.age = age\n", @@ -800,16 +800,16 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ - "a = SoftwareEngineer('Kartik',26)" + "a = Person('Kartik',26)" ] }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -826,7 +826,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -844,6 +844,7 @@ " '__gt__',\n", " '__hash__',\n", " '__init__',\n", + " '__init_subclass__',\n", " '__le__',\n", " '__lt__',\n", " '__module__',\n", @@ -860,13 +861,13 @@ " 'salary']" ] }, - "execution_count": 41, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "dir(SoftwareEngineer)" + "dir(Person)" ] }, { @@ -979,21 +980,9 @@ "cell_type": "code", "execution_count": 6, "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'SoftwareEngineer' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mclass\u001b[0m \u001b[0mArtist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mSoftwareEngineer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0martform\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mjob\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjob\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mjob\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"is a\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjob\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mNameError\u001b[0m: name 'SoftwareEngineer' is not defined" - ] - } - ], + "outputs": [], "source": [ - "class Artist(SoftwareEngineer):\n", + "class Artist(Person):\n", " def artform(self, job):\n", " self.job = job\n", " print(self.name,\"is a\", self.job)" @@ -1003,19 +992,7 @@ "cell_type": "code", "execution_count": 7, "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'Artist' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mArtist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Nishanth'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m21\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;31mNameError\u001b[0m: name 'Artist' is not defined" - ] - } - ], + "outputs": [], "source": [ "c = Artist('Nishanth',21)" ] @@ -1068,7 +1045,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -1094,11 +1071,11 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ - "class Artist(SoftwareEngineer):\n", + "class Artist(Person):\n", " def artform(self, job):\n", " self.job = job\n", " print(self.name,\"is a\", self.job)\n", @@ -1146,11 +1123,11 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ - "class emptylist:\n", + "class EmptyList:\n", " def __init__(self):\n", " self.data = []\n", " def one(self,x):\n", @@ -1163,16 +1140,16 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ - "xc = emptylist()" + "xc = EmptyList()" ] }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -1331,7 +1308,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.8" + "version": "3.6.9" } }, "nbformat": 4,