python学习(7)函数、异常、模块、包
一、函数返回值:
1、一个函数,不管是否有return,它都是有返回值的,如果没有return,它的返回值是None。查看返回值,要print输出。
2、如果有return,函数的返回值是return后面的内容,切记:return后面的代码是不能够执行的。
函数返回值的价值是:把函数与函数之间能够建立一层关联关系。
sessionid请求流程
客户端向服务器发送请求,会有一个返回值,之后客户端带着这个返回值去访问个人主页,服务器会核对这个客户端带的返回值和服务端的sessionID,用以区分用户。
(比如很多的人要去登录淘宝,服务器怎么知道是谁,就在登录的时候返回值,用户带着返回值与服务器的sessionID比对,就可以去访问自己的主页)
1、数字转字母(数字最好是在 97到122)
chr
字母转数字(字母加引号)
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 这个文件,文件夹没有
新建文件夹:Directory
2、模块调用
在一个模块调用另一个模块文件的变量以及函数(实现各个模块之间代码的联系)
from package.module import *
(package:包名 module:模块名 *代表所有)
例:
f1模块内容如下,有函数和变量:
在另一个模块中from... ...调用login包的f1模块 ,这时执行这个模块其中的函数和变量,是可以得到结果的: