摘要:
一、迭代器 1、可迭代对象 序列观念的通用化:如果对象是实际保存的序列,或者可以在迭代工具环境中一次产生一个结果的对象,就看做是可迭代的。 迭代协议:实现了__next__方法的对象,被认为是可迭代的。 当for循环开始时,会通过它传递给iter内置函数,以便从可迭代对象中获得一个迭代器,返回的对象 阅读全文
摘要:
1、函数设计 耦合性 对于输入是用参数并且对于输出使用return语句; 只有真正必要的情况下使用全局变量; 不要改变可改变类型的参数,除非调用者希望这样; 每个函数都应有一个单一的、统一的目标; 每个函数应相对较小; 避免直接改变在另一个模块文件中的变量。 总之,使函数和其他编程组件中的外部依赖性 阅读全文
摘要:
1、传递参数 参数的传递是通过自动将对象赋值给本地变量名来实现的;作为参数被传递的对象从来不自动拷贝。 不可变参数“通过值”进行传递。实际就像创建了一份拷贝。 可变对象是通过“指针”进行传递。可变对象能够在函数内部进行原处的改变。 在函数内部的参数名的赋值不会影响调用者:在函数运行时,在函数头部的参 阅读全文
摘要:
1、作用域基础 当在程序中使用变量名时,Python创建、改变或查找变量名都是在命名空间(保存变量名的地方)中进行。 在默认情况下,一个函数的所有变量名都是与函数的命名空间相关联的。 在代码中变量名被赋值的位置决定了这个变量名能被访问到的范围。 函数为程序增加一个额外的命名空间层: 默认情况下,一个 阅读全文
摘要:
1、基础 def是可执行的代码;实时执行的。 Python中所有的语句都是实时运行的,没有像独立的编译时间这样的流程。 def创建了一个对象并将其赋值给某一变量名; lambda创建一个对象但将其作为结果返回; return将一个结果对象发送给调用者。 可出现在函数主体中的任何地方; 表示函数调用的 阅读全文