python学习(7)函数、异常、模块、包
一、函数返回值:
1、一个函数,不管是否有return,它都是有返回值的。
如果没有return,它的返回值是None。
2、如果有return,函数的返回值是return后面的内容。
3、查看返回值,要print输出。
切记: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可以不输。以上的例子,我们的score是等于一个int类型的,但是如果输入的是字母类型,不能强制转换为int类型,所以这就是一个异常了,对于这个异常,我们在死循环中,进行捕获异常后,不做输出,continue继续程序,这种输入错误的异常就不会影响我们程序的进行。
四、模块和包
1、模块、包、文件夹
1、模块(module)
在python中,每一个python文件都是一个模块。自己写的python文件不能起名和python中要用的模块名一样,否则会调用不到函数和方法。
2、包(package):
在一个包里面会有很多的模块(如下图)
3、包与文件夹的区别:
包里面有_ init _.py 这个文件,文件夹没有

新建文件夹:Directory

2、模块调用
在一个模块调用另一个模块文件的变量以及函数(实现各个模块之间代码的联系)
from package.module import *
(package:包名 module:模块名 *代表所有)
例:
f1模块内容如下,有函数和变量:

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



浙公网安备 33010602011771号