8.15(day16)模块的四种形式,import与from,,,import,循环导入,模块搜索路径,Python文件的两种用法,random模块

复习

函数的定义

def 函数名():
    code
    return 返回值

定义函数的三种方法

  1. 有参函数
  2. 无参函数
  3. 空函数

函数返回值

  1. return 终止函数
  2. 返回值 可以返回多个值, 以元组形式存储
  3. 默认返回None

Nonetype ....

函数调用

函数名()

函数的参数

形参

描述意义

位置形参

一个一个从左到右

默认形参

默认值, 默认形参必须放在位置形参的后面

实参

具有具体的值

位置实参

一个一个从左到右传值给形参

关键字实参

键值对的形式传给形参 ; 关键字实参必须放在位置实参的后面

可变长参数

*

形参

接收多余的位置实参,以元组的形式存储

实参

打散元组,以位置实参的形式传参给形参

**

形参

接收多余的关键字实参,以字典的形式存储

实参

**{'a':1} --> a=1

打散字典,以关键字实参的形式传给形参(形参必须得有这个key的形参名)

函数对象

  1. 引用
  2. 函数的参数
  3. 函数的返回值
  4. 容器类元素

函数对象 是 函数名 == 变量名

函数的嵌套

def f1():
    def f2():
        pass

名称空间和作用域

  1. 内置
  2. 全局
  3. 局部

执行顺序: 内置 --> 全局 --> 局部

查找顺序: 当前 --> 局部 --> 全局 --> 内置

全局作用域:

局部作用域

  1. 全局作用域(x=1)和局部作用域的(x=3)毫无关联
  2. 局部作用域1的(x=1)和局部作用与2的(x=3)毫无关联

闭包函数

把函数A和变量x包在函数B内部,然后通过函数B的返回值返回出函数A对象

def B(x):
    # x = 1 
    def A():
        print(x)
        pass
   	return A

装饰器

用来给函数加功能的,他的本质也是函数

  1. 不改变被装饰函数的源代码
  2. 不改变被装饰函数的调用方式
def outter(func):
    def wrapper(*args,**kwrags):
        # 逻辑
        res = func(*args,**kwargs)  # func是被装饰的函数
        return res
    return wrapper

@outter
def index():
    pass



def sanceng(engine):
    def outter(func):
        def wrapper(*args,**kwrags):
            # 逻辑
            res = func(*args,**kwargs)  # func是被装饰的函数
            return res
        return wrapper
   	return outter

@sanceng(engine)
def index():
    pass

迭代器

可迭代对象: 具有iter方法的对象, 可迭代对象不一定是迭代器对象

迭代器对象: 具有iter和next方法的对象, 迭代器对象一定是可迭代对象, 迭代器对象加上iter方法还是迭代器本身

for 循环原理

for i in lt:

  1. 把lt变成迭代器对象
  2. 然后迭代使用next方法获取每一个元素
  3. 捕捉异常中断while循环

三元表达式

print(1) if i > 10 else print(2)

列表推导式

[i for i in range(10)] # 0-9已经拿出来了

字典生成式

{k:v for k,v in dic.items()}

生成器表达式

(i for i in range(10)) # 不去使用next取值,是没有值的

生成器

自定制的迭代器

def func():

​ yield

yield:

1. 暂停函数,遇到下一个yield继续运行函数体代码
  1. 具有返回值
  2. 让函数()变成生成器对象

return:

1. 终止函数
  1. 返回值

递归

函数调用函数本身,但是必须得有结束条件

内置函数

内置函数是直接用的,属于python解释器的

数据类型的内置函数只有数据类型本身才能使用

enumerate()

面向过程编程

流水线

优点: 思路清晰

缺点: 可扩展性差 ; 功能与功能之间不独立 ; 调试麻烦

模块的四种形式

1.自定义模块

2.第三方模块

3.内置模块

4.包,一系列模块组织在一起的文件夹

import 和 form,,,import

# import 与 from import
# import .直接调用模块
# 1.生成名称空间
# 2.运行time.py文件,把time.py文件名称空间放入time名称空间,
# 3.time导入import或from,,,import  的名称空间
# import  time
# time.方法()   不能直接用方法名

# form time import gmtime
# print(gmtime())
# 1.内存中生成time名称空间
# 2.
# 3.把gmtime方法直向import和from import .py(当前导入time模块的文件)的名称空间
# 多个时
# from time import gmtime,   ,       ,

循环导入

模块搜索路径

Python文件的两种用法

第一种:执行文件

第二种:模块文件

random模块

# random模块   随机数
# import random   导入
# print(random.random())   随机0到1的小数
#
# print(random.randint(1,3))   不会去3
#
# print(random.randrange(1,3))   [1.3)之间整数
#
# print(random.uniform(1,3))   取小数(1.3)
#
# print(random.choice([1,'23',[4,5]]))   随机取一个
#
# print(random.sample([1,'23',[4,5]],2))   容器中选择多个
#
# lis = [1,3,5,7,9]   打乱容器
# random.shuffle(lis)
# print(lis)
posted @ 2019-09-16 19:00  ZJJJJJJJ  阅读(587)  评论(0编辑  收藏  举报