python速成要多久2019-8-28_Python脱产8期 Day13 2019/4/28

一 函数的嵌套定义

1在一个函数的内部定义另一个函数。

2.为什么有函数的嵌套定义:

# 1)函数fn2想直接使用fn1函数的局部变量,可以讲fn2直接定义到fn1的内部,这样fn2就可以直接访问fn1的变量

# 2)函数fn2名字就变成fn1的局部变量了,正常只能在fn1中使用,想在外部使用,可以讲fn2函数对象作为fn1函数的返回值

# 3)在外部也用同名的变量fn2来接收fn1函数的执行结果(fn1函数的返回值),那么fn2也就是可以在外部被调用

二 global关键字

# 作用:将局部的变量提升为全局变量

# 1.全局没有同名变量,直接提升局部变量为全局变量

# 2.有同名全局变量,就是统一全局与局部的同名变量

# -- 如果局部想改变全局变量的值(发生地址的变化),可以用global声明该变量

# num = 888

def fn1():

global num

# print(num)

# 没有global修饰,num就是自己局部的变量

# 有global修饰,num就是全局的num,全局中只能出现一个num,如果出现了值的改变,大家一起变

num = 666

def fn2():

print(num) # 666

fn1()

fn2()

三 nonlocal关键字

# 作用:将局部的变量提升为嵌套局部变量# 1.必须有同名嵌套局部变量,就是统一嵌套局部与局部的同名变量#       -- 如果局部想改变嵌套局部变量的值(发生地址的变化),可以用nonlocal声明该变量​def outer():    num = 888    def inner():        nonlocal num        num = 666        print(num)  # 666    inner()    print(num)  # 666outer()

四 闭包

1.定义:被函数包裹的函数 - 定义在函数内部的函数

2.

闭包的应用场景# 1.闭包中使用的变量可以被外层函数所传递 - 外层函数可以为闭包传递参数

# 2.延迟执行

五 装饰器

1.装饰器:满足开放封闭原则的一个闭包应用

2.开放封闭原则:在不修改源代码与调用方式的情况下为函数添加新功能

3.装饰器公式:

def outer(func): def inner(*args, **kwargs): pass res = func(*args, **kwargs) pass return res return inner

@outerdef fn(): pass

4.例子:

# @outer语法来调用outer,规定传入被装饰的函数对象,所以参数固定为一个,接受被装饰的函数对象

def outer(func):

# 不能确定被装饰的函数的参数:来者不拒,用可边长来接受

def inner(*args, **kwargs):

pass # 新功能位

res = func(*args, **kwargs) # 解压带给原功能

pass # 新功能位

return res

return inner

# 使用装饰器(outer),得到新功能(inner)

# 用被装饰的函数名去接受装饰器的执行结果,调用装饰器时传入被装饰的函数对象

@outer # fn = outer(fn) = inner

def fn(): pass

# 表面感觉调用的是原函数,本质调用的是闭包(inner),使用fn调用和fn定义及inner需要参数统一

fn()

Python脱产8期 Day014 2019/4/28

一 带参装饰器 1.通常,装饰器为被装饰的函数添加新功能,需要外界的参数 # -- outer参数固定一个,就是func # -- inner参数固定同被装饰的函数,也不能添加新参数 # -- 可以借 ...

Python脱产8期 Day12 2019/4/26

一 函数默认值的细节 1.如果函数的默认参数的默认值为变量,在所属函数定义阶段一执行就被确定为当时变量存放的值 例: a = 100def fn(num=a): print(num) # 100a = ...

Python脱产8期 Day10 2019/4/24

一 函数 1.定义:完成 特定 功能的代码块,作为一个整体,对其进行特定的命名,该名字就代表函数>>工具. 2.函数的优点:1.避免代码的冗余:2.让程序结构代码更加清晰:3.让代码更加具 ...

Python脱产8期 Day03 2019/4/15

一 变量的命名规范 1.只能由 字母, 数字,  _, 组成. 2. 不能以数字开头 3.避免与系统关键字重名:重名不会报错,但系统的功能就被自定义的功能屏蔽掉了(严重不建议这样来做) 4.以_开头的 ...

Python脱产8期 Day11 2019/4/25

一 字符串比较 1.字符串比较:字符串对应的ascii进行比较 2.多个字符的字符串进行比较:从前往后逐个字符进行比较,一旦哪个位置的字符出现了大小关系就结束比较. 二 形参与实参 1.参数介绍: 函 ...

Python脱产8期 Day09 2019/4/23

内存管理 一.引用计数:垃圾回收机制的依据 1.变量的值被引用,该值的引用计数 +12.变量的值被解绑,该值的引用计数 -13.引用计数为0时就会被垃圾回收机制回收 二.引用计数会出现循环引用问题:相 ...

Python脱产8期 Day08 2019/4/22

一.三种字符串 1.普通字符串:u'以字符作为输出单位‘  #print(u‘abc’)#用于显示 2.二进制字符串:b'以字节作为输出单位’#用于传输 3.原义字符串:r‘以字符作为输出单位,原样输 ...

Python脱产8期 Day07 2019/4/19

一 数据类型的相互转化 1.哪些类型可以转换为数字类型 2.数字转换为字符串 print(str(10)) 3.字符串与列表相互转换 1.字符串转化为列表:list(字符串) 2.列表转换为字符串:' ...

Python脱产8期 Day06 2019/4/18

一 深浅拷贝 例:ls = [1, 'abc', [10]] 1.值拷贝:s1 = ls    # ls1直接将ls中存放的地址拿过来,>ls内部的值发生任何变化,ls1都会随之变化. 2.浅拷 ...

随机推荐

a primary example for Functional programming in javascript

background In pursuit of a real-world application, let’s say we need an e-commerce web applicationfo ...

【LeetCode】1. Two Sum

题目: Given an array of integers, return indices of the two numbers such that they add up to a specifi ...

mysqlroot passwd

grant all on *.* to 'root'@'192.168.0.%' identified by 'bloablabar'; 更改用户密码: update user set passwor ...

Linux查看用户登陆历史记录

last 命令: 功能说明:列出目前与过去登入系统的用户相关信息. 语 法:last [-adRx][-f ][-n ][帐号名称-][终端机编号-] 补充说明:单独执行last指令,它会读取位于/v ...

从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件

一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些许秘籍. 本文是介绍两个最常用的jQuery插件. 分别用 ...

在cygwin下编译c语言

#include int main (void) { printf("Hello World!\n"); ; } 1.保存到cygwin工作目录下 ...

HD2 Tmobile 重新分区代码(使用clk 1.6.5 de)

fastboot oem part-resize misc: fastboot oem part-resize recovery: fastboot oem part-resize boot: fas ...

5个常常被大家忽略的Python小技巧

下面我挑选出的这几个技巧常常会被人们忽略,但它们在日常编程中能真正的给我们带来不少帮助. 1. 字典推导(Dictionary comprehensions)和集合推导(Set comprehensi ...

IE8兼容问题

最近做的网站,需要兼容IE8,在这里记录一下,碰到的问题,方便以后查看补充 1.CSS选择器nth-child 不兼容 ul li:nth-child(2){ background-image: ur ...

【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-6底层驱动之多路开关选择器

视频简介:该视频介绍iCore3应用开发平台中多路开关选择器的应用,多路开关选择器的硬件电路连接以及软件实现的方法. 源视频包下载地址:链接:http://pan.baidu.com/s/1geQ4W ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值