python学习(7)函数、异常、模块、包


一、函数返回值:

1、一个函数,不管是否有return,它都是有返回值的,如果没有return,它的返回值是None。查看返回值,要print输出。

2、如果有return,函数的返回值是return后面的内容,切记:return后面的代码是不能够执行的。

函数返回值的价值是:把函数与函数之间能够建立一层关联关系。

 

sessionid请求流程

客户端向服务器发送请求,会有一个返回值,之后客户端带着这个返回值去访问个人主页,服务器会核对这个客户端带的返回值和服务端的sessionID,用以区分用户。

(比如很多的人要去登录淘宝,服务器怎么知道是谁,就在登录的时候返回值,用户带着返回值与服务器的sessionID比对,就可以去访问自己的主页)

二、内部函数

1、数字转字母(数字最好是在 97到122)

chr

字母转数字(字母加引号)

ord

2、范围

range

range(参数)

从零开始的,不包含这个数字的一个范围。(表示一共有几个数)

range(参数1,参数2)

包含开始不包含结尾

3、random随机

random.randint(参数1,参数2)
  • 参数1、参数2必须是整数

  • 函数返回参数1和参数2之间的任意整数闭区间(包含开始和结束)

  • 需要先导入库(import    random)

例1:

随机的输出1到100 的数字(包含1和100):

例2:

随机生成四位字母:

 例3:

随机生成四位数字:

 (不能直接将数字列表 转为字符串,所以先将数字转为字符串加入列表,再将列表转为字符串

4、字符串转为表达式

eval(字符串)

 

5、匿名函数

lambda:匿名函数指的是它是一个函数,但是这个函数的名称可以是自定义的。相当于把多行函数用一行写成。 调用lambda函数时,要print。

如: a=lambda x,y : x+y

(a是函数名)

:左边是函数的形式参数
?
:右边是函数的表达式

 

6、过滤函数

(1)常规:

需求:过滤出list1中大于2的数字

(2)filter过滤

filter(函数对象,可迭代对象)

①函数对象:只写函数名称,不需要带括号()

②可迭代的对象(必须是可以被循环的)

③查看结果的类型不对时,需要强制转成list类型

A方法:

相当于把可迭代对象做为参数放在左边的函数对象中进行过滤。要强制转换为list类型。

return True 内部继续循环 

B方法:

lambda函数

7、针对所有对象做同样的操作

①map方法

map(函数对象,可迭代对象)

1、函数对象,只写函数名称,不需要带括号()

2、可迭代的对象(可以被循环)

相当于把可迭代对象做为参数放在左边的函数对象中做同样的操作。要强制转换为list类型。

 ②常规方法

8、全局变量和局部变量

全局变量:在一个python文件中定义的变量。作用范围为函数内部和外部都可以使用。
?
局部变量:在一个函数中定义的变量,局部变量使用global声明,这个变量实际上就变成了全局变量

优先级:

1、在python文件中,调用变量,全局变量优先级是高于局部变量的

2、在函数内部调用变量,局部变量的优先级是高于全局变量的

3、如果在函数内部项引用全局变量,那么使用关键字 global (引用变量到函数内部使用)

三、异常处理

异常的父类是:BaseException

异常捕捉使用的语句:

try:
?
except:
?
else:
?
finally

 

(通常我们要捕获的异常也不知道是什么类型的异常,Exception这个类型就包含了很多的异常类型,所以我们捕捉异常类型时,就用Exception这个类型,不用细分,就会捕捉到)

顺序:

1、正常逻辑:try :——> else : ——> finally:

2、异常逻辑:try :——>except:——> finally:

 

正常逻辑:try :——> else : ——> finally:

 异常逻辑:try :——>except:——> finally:

 例1:

 try 和except是必须输的,else和finally可以不输。以上的例子,在死循环中,捕获异常后,不做输出,而是continue继续程序。

例2:

四、模块和包

1、模块、包、文件夹

1、模块(module)

在python中,每一个python文件都是一个模块

2、包(package):

在一个包里面会有很多的模块(如下图)

3、包与文件夹的区别:

包里面有_ init _.py 这个文件,文件夹没有

新建包:Python Package

新建文件夹:Directory

 

2、模块调用

在一个模块调用另一个模块文件的变量以及函数(实现各个模块之间代码的联系)

from package.module import  *

(package:包名 module:模块名 *代表所有)

 

例:

f1模块内容如下,有函数和变量:

 在另一个模块中from... ...调用login包的f1模块 ,这时执行这个模块其中的函数和变量,是可以得到结果的: