第三章 过程大于结果

3.1 懒人炒菜机

1.函数是什么

集合的对应关系、数据的魔法盒子、 语句的封装

2.定义函数

def   函数名(参数)              #命名定义的函数,并赋予形参

         statement                         #执行下列语句

         return (参数)               #返回函数结果,可以同时返回多个值,函数结束

3.调用函数

1.给定实参 2.直接调用

a=5

b=6 

x=square_sum(a, b) 

print(x)                                              # 结果为61

4.函数文档

即说明文档。

def    square_sum(a,b): 

         """return the square sum of two arguments""" 

        a = a**2

        b = b**2

        c = a + b 

        return c

在函数内容一开始的时候,增加了一个多行注释。这个多行注释同样有缩进。 它将成为该函数的说明文档。

如何调用:

help(square_sum)

3.2参数传递

1.基本传参

(1)位置对应

def   print_arguments(a, b, c): 

        """print arguments according to their sequence""" 

        print(a, b, c) 

        print_arguments(1, 3, 5)                     # 打印1、3、5 

        print_arguments(5, 3, 1)                     # 打印5、3、1

        print_arguments(3, 5, 1)                     # 打印3、5、1

(2)关键字对应

print_arguments(c=5,b=3,a=1)                  # 打印1、3、5

2.包裹传参

1.元组包裹

def   package_position(*all_arguments): 

print(type(all_arguments))

print(all_arguments)

package_position(1,4,6)

package_position(5,6,7,1,2,3)

为了提醒Python参数all_arguments是包裹位置传递所用的元组名,我们在定义 package_position()时要在元组名all_arguments前加*号

2.字典包裹

def   package_keyword(**all_arguments):

print(type(all_arguments)) 

print(all_arguments) 

package_keyword(a=1,b=9)

package_keyword(m=2,n=1,c=11)

为了提醒,参数all_arguments是包裹关键字传递所用的字典,因此在 all_arguments前加**

3.解包裹

unpackage:把元组和字典拆分成一个个元素

3.3递归

在一个函数定义中调用这个函数自身。

为了不陷入死循环要设定一个程序能达到的终止条件。

3.3.2 函数栈

显著特征:先进后出

程序运行的过程,可以看作是一个先增长栈后消灭栈的过程。每次函数 调用,都伴随着一个帧入栈。如果函数内部还有函数调用,那么又会多一个帧入 栈。当函数返回时,相应的帧会出栈。等到程序的最后,栈清空,程序就完成了。

3.3.3 变量的作用域

python寻找变量的范围为当前帧+“主程序”中的定义,当在函数定义内部时,优先调用内部的定义。

函数的参数与函数内部变量类似。我们可以把参数理解为函数内部的变量。在函数调用时,会把数据赋值给这些变量。等到函数返回时,这些参数相关的变量会被清空。

3.4 引入那把宝剑

3.4.1 引入模块

在Python中,一个.py文件就构成一个模块。通过模块,你可以调用其他文件中的函数。而引入(import)模块, 就是为了在新的程序中重复利用已有的Python程序。Python通过模块,让你可以调用其他文件中的函数。

from 文件名 import 元素/定义

3.4.2 搜索路径

(1)python安装目录

(2)标准库的安装路径

(3)操作系统环境变量PYTHONPATH所包含的路径。

3.5异常处理

3.5.1 恼人的BUG

bug:程序缺陷,包含语法错误(无法执行)和语义错误(错误执行)

3.5.2 Debug

在程序内部插入简单的print()函数,就可以查看变 量的状态以及运行进度。有时,还可以将某个指令替换成其他形式,看看程序结果 有何变化,从而验证自己的假设。当其他可能性都排除了,那么剩下的就是导致错误的真正的原因。

测试驱动开发:适用于python

利用PyCharm的Debug功能

3.5.3异常处理

(1)在程序中止之前进行更多的操作,如提供错误信息

(2)在程序犯错后依然能运行下去。

你可能感兴趣的:(第三章 过程大于结果)