从入门到自闭之Python闭包】的更多相关文章

闭包 定义:在嵌套函数内,使用(非本层变量)非全局变量就是闭包 闭包必须是内层函数对外层函数的变量(非全局变量)的引用 函数执行完毕后,函数体内的空间自行销毁 def func(): a=1 def foo(): print(a) print(foo.__closure__) #判断是不是闭包,返回None就不是闭包 func() 作用: 保护数据的安全性 装饰器…
Python解释器的安装 1 下载 ​ 下载地址:https://www.python.org 选择windows平台的链接进行下载 https://www.python.org/downloads/windows/ 下载64位版本(根本本人电脑选择适合的位数) 2安装 (切记:一定要勾选Add Python 3.6 to PATH,会自动安装环境变量,使第六步的测试安装更加方便) 3修改安装路径 (勾选Install for all users,然后根据本人安装习惯选择安装路径,此安装路径最好…
小数据池 int: -5~256 str: 字母,数字长度任意符合驻留机制 字符串进行乘法时总长度不能超过20 特殊符号进行乘法时只能乘以0 代码块: 一个py文件,一个函数,一个模块,终端中的每一行都是代码块 int:-5~无穷大 str: 定义字符串的时候可以是任意的 字符串(字母,数字)进行乘法时总长度不得超过20 特殊字符(中文,符号)进行乘法时乘以0或者1 bool: True False is是判断两边的内存地址是否相同 ==判断两个值是否相等 代码块.小数据池同在的情况下先执行代码…
Day 01 整型: 对比: 在python 2 版本中有整型,长整型long 在python 3 版本中全部都是整型 用于计算和比较 整型和布尔值的转换 二进制转换成十进制: ​ print (int("111010100",2)) # 2进制 - 10进制 0 * 2**0 + 1 * 2 ** 1 + 1 * 2**2 + 1* 2**3 + 1 * 2 ** 4 + 1 * 2 ** 5 0 + 2 + 4 + 8 + 16 + 32 = 62 print(int("…
python是一门解释型编程语言 变量名命名的规则: 变量名由字母,数字,下划线组成 变量名不能以数字开头 变量名要具有可描述性 变量名要区分大小写 变量名禁止使用python关键字 变量名不能使用中文和拼音 变量名推荐写法: 驼峰体 下划线(推荐使用下划线) 常量 变量名全部大写叫做常量,一直不做更改的量 常用于配置文件中 注释 单行注释 -# 多行注释 - """""" '''''' 基础数据类型初始 字符串( str ):用于存储一些数据,…
序列化(背) json :将数据类型转换成字符串(序列化),将字符串装换成原数据类型(反序列),支持dict,list,tuple等,序列后都变成了列表 dumps,loads ------ 用于网络传输 json.dumps:将数据类型转换成字符串 json.loads:将字符串转换成原数据类型 dump,load ------ 用于文件传输 json.dump:一个load对应一个dump 中文转换时,必须加ensure_ascii = False 转换后的数据类型排序:sort_keys…
名称空间: 内置空间:python解释器自带的一块空间 全局空间:py文件中顶格写的就是全局空间 局部空间:函数体中就是局部空间 加载顺序: 内置空间 全局空间 局部空间 # def func(): # a = 1 # print(a) # func() 取值顺序: 局部空间 全局空间 内置空间 a = 10 def func() print(a) func() 作用域: 全局作用域:全局+内置 局部作用域:局部 函数的嵌套 ​ 不管在什么位置,只要是函数名()就是在调用一个函数. # 混合嵌套…
time模块:import time time.time():时间戳,是一个浮点数,按秒来计算 time.sleep():睡眠,程序暂停多少秒执行 python中时间日期格式化符号: 必背 %y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00=59) %S 秒(00-59) 简单记忆,了解就好 %a 本地简化星期名称…
自定义模块 定义:一个文件就是一个模块(能被调用的文件,模块就是一个工具箱,工具就是函数) 作用: 将代码文家化管理,提高可读性,避免重复代码 拿来就用(避免重复造轮子),python中类库比较多,提升开发效率 import导入时会做三件事: # import test # 只能将整个工具箱拿来 # a = test.t1 # b = test.t2 # # a() # b() 将.py文件中的所有代码读取到当前文件 在当前文件开辟空间 等待被调用 import导入同一个模块名时,只执行一次 i…
1.什么是生成器 核心:生成器的本质就是一个迭代器 迭代器是python自带的的 生成器是程序员自己写的一种迭代器 编写方式: 基于函数编写 推导式编写 def func (): print("这是一个函数") return"函数" func() def func(): print("这是一个生成器") yield"生成器" #func() 生成一个生成器 print(func().__next__) #启动生成器 输出结果:…
函数名的第一类对象(概述): 使用方式: 函数名可以当做值赋值给变量 def func(): print(1) print (func) #查看函数的内存地址 a = func print (a) # 函数名可以当做容器中的元素 dic = {"1":login,"2":register,"3":index} msg = """ 1 登录 2 注册 3 主页 """ choose = i…
开放封闭原则:在不修改源代码及调用方式,对功能进行额外添加就是开放封闭原则 开放:对代码的扩展进行开发 封闭:修改源代码 装饰(额外功能) 器:工具(函数) 普通版: # print(time.time()) #时间戳,小数 import time def func(): time.sleep(1) print("这是小刚写的功能") def func(): time.sleep(1) print("这是小红写的功能") def index(): time.slee…
""" name = input(">>>")通过代码来验证name变量是什么数据类型? """ name = input(">>>") print(type(name),"name") """if条件语句的基本结构?""" 1.if -- 如果. 官方推荐四个空格,Tab 空格和tab不能混…
1. 文件操作: 读操作: 格式:f = open("文件路径",mode = "r",encoding = "utf-8") f : 代表文件句柄 文件路径: 绝对路径:从根文件夹下查找 相对路径: 相对于某个文件进行查找 f = open("D:\Python_s25\day08\小姐姐电话号",mode="r",encoding="utf-8")# print(f.read())…
Day 01 整型: 对比: 在python 2 版本中有整型,长整型long 在python 3 版本中全部都是整型 用于计算和比较 整型和布尔值的转换 二进制转换成十进制: ​print (int("111010100",2)) python 2进制 - 10进制 0 * 20 + 1 * 2 1 + 1 * 22 + 1* 23 + 1 * 2 ** 4 + 1 * 2 ** 5 0 + 2 + 4 + 8 + 16 + 32 = 62 print(int("11111…
ascii码: 支持英文,数字,符号 1字节 不支持中文 gbk(国标) 支持英文,数字,符号 1字节 支持中文 2字节 unicode(万国码): 支持英文,数字,符号 4字节 支持欧洲 4字节 支持亚洲 4字节 utf-8: 支持英文,数字,符号 --1字节 支持欧洲 --- 2字节 支持亚洲 ---- 3字节…
字典: 定义:dict dict = {"key":"value"} -- 键值对 作用:存储大量数据,数据和数据起到关联作用 所有的操作都是通过键来完成 键:必须是不可变的数据类型(可哈希),且唯一不可变 值:任意的数据类型 字典是可变的数据类型,无序的 字典的增: 暴力添加:dict["key"] = "value" 添加一个键值对,可以是列表 有责添加,无则不添加 dict.setdefault("key&qu…
1.列表 数据类型之一,存储数据,大量的,存储不同类型的数据 列表是一种有序的容器 支持索引 列表是一种可变数据类型 原地修改 列表中只要用逗号隔开的就是一个元素,字符串中只要是占一个位置的就是一个元素 1.1 列表的增加: lst.append() 追加(在最末尾的地方进行添加) lst. insert() 插入 lst.extend() 迭代添加 1.2 列表的删除 lst.clear() 清空 lst.pop() 删除 lst.remove() 移除 del lst[4] # 通过索引删除…
while 循环 ​ while 条件: ​ 循环体 终止循环的两种办法: 改变条件 break break和continue的用法: break 用法:打破当前循环,(终止当前循环),所处位置在循环体中,用在循环体之后 continue用法:形成一个闭环,循环执行continue之前的循环体,continue会伪装成最后一行代码,不执行他之后的代码 while else: ​ while 条件: ​ 循环体 ​ else: ​ 结果 # 当while循环体中出现了break就不会再执行else…
软件命名规范:分文件存储 当代码存放在一个py文件中时会存在一下缺点: 不便于管理 可读性差 加载速度慢 是Django的雏形 程序员预定俗称的一些东西 启动文件:也叫启动接口,通常文件夹名字使用bin,存放启动程序,通常使用starts命名py文件 公共文件:是大家都可以使用的文件,功能,通常使用lib命名文件夹,py文件使用common命名py文件 配置文件:也叫静态文件,存储的都是变量,数据库的一些连接方式,获取到的是都是redis,文件夹命名为conf,py文件命名为settings 主…
函数初识 定义:def--关键字 ​ 将某个功能封装到一个空间中就是一个函数 功能: ​ 减少重复代码 函数的调用 ​ 函数名+():调用函数和接收返回值 函数的返回值 return 值 == 返回值 可以返回任意的数据类型 return 返回多个内容是元祖的形式 return 下方不执行,并且会终止当前函数 return 不写或者写了return 后面不写值都会返回None 函数的返回值返回给函数的调用者 函数的返回值可以有多个结果 函数的参数 分类: 位置参数:一一对应 默认参数:参数定义是…
导入:import random 随机小数:random.random():大于0小于1之间的小数 指定数字之间的小数,不包含指定的最大值:random.uniform() 随机整数:random.randint(1,5):大于等于1且小于等于5之间的整数 指定奇数或偶数,使用步长:random.randrange(1,19,步长) 随机选择一个并返回,会出现重复元素,以列表形式返回:random.choice((1,2,3,),k=3),出现3个元素 任意选择三个元素出现,不会重复:rando…
递归:不断地调用自身,用函数实现 死递归(死循环): def func(): print(1) func() func() 知识点:官方说明最大深度1000,但实际执行998或997以下,看电脑性能 满足两个条件才是递归 不断调用自身 有明确的终止条件 举例:以计算年龄为例 def age(n): if n == 1: return 18 else: return age(n-1)+2 print(age(3)) #3代表执行三次 拆解: ![image-20190627140416004](C…
装饰器的进阶 有参装饰器: # def warpper(func): # def inner(*args,**kwargs): # user = input("user:") # pwd = input("pwd:") # if user == 'alex' and pwd == "dsb": # func(*args,**kwargs) # return inner # # @warpper # def foo(): # print("…
高阶函数:内部帮忙做了一个for循环 filter:筛选过滤 语法: filter(function,iterable) function: 1.指定过滤规则(函数的内存地址) 2.用来筛选的函数,在filter中会自动的把iterable中的元素传递给function,然后根据function返回的True或者False来判断是否保留此项数据 iterable:可迭代对象 ####写函数名切记不加括号 lst = [{'id':1,'name':'alex','age':18}, {'id':…
内置函数一 eval:执行字符串类型的代码 exac:执行字符串社类型的代码 eval与exac 禁止使用 hash()作用就是区分可变数据类型与不可变数据类型 # print(hash("123")) # print(hash(12)) # print(hash(-1)) # print(hash(-10)) # print(hash((2,1))) # dic = {[1,2,3]:2} # print(hash([1,2,3])) help():查看帮助信息 callable()…
什么是闭包? 闭包(closure)是词法闭包(lexical closure)的简称.闭包不是新奇的概念,而是早在高级程序语言开始发展的年代就已产生. 对闭包的理解大致分为两类,将闭包视为函数或者是由函数及其引用环境组成的复合体. 前者认为闭包是在其词法上下文中引用了自动变量的函数. 后者认为闭包是显示表示引用外部环境,并将它与函数捆绑在一起而产生的复合体. 所谓的自由变量是指局部变量以外的变量,同时自由变量的绑定可预知,所谓的绑定(binding)是指变量名称与其所代表的对象之间的联系.一些…
1. Python闭包是什么 在python中有函数闭包的概念,这个概念是什么意思呢,查看Wikipedia的说明如下: “ In programming languages, closures (also lexical closures or function closures) are a technique for implementing lexically scoped name binding in languages with first-class functions. Ope…
Python闭包 先看一个例子: def outer(x): def inner(y): return x+y return innder add = outer(8) print add(6) 我们定义了一个方法outer,方法内部又定义了一个方法inner,方法outer返回值为内部定义的方法inner. 同时,内部方法innder使用了外部方法的参数x. 从我们的调用方式可以清晰地看到,add=outer(8)相当于add接受了类似于下边一个方法 def inner(y): return…
Python闭包详解 1 快速预览 以下是一段简单的闭包代码示例: def foo(): m=3 n=5 def bar(): a=4 return m+n+a return bar >>>bar = foo() >>>bar() 12 说明:bar在foo函数的代码块中定义.我们称bar是foo的内部函数. 在bar的局部作用域中可以直接访问foo局部作用域中定义的m.n变量.简单的说,这种内部函数可以使用外部函数变量的行为,就叫闭包. 那么闭包内部是如何来实现的呢?…