返回值

委托和lambda表达式,Action和Func

删除回忆录丶 提交于 2019-11-28 10:48:18
转自博客园(殉殇) 委托和lambda表达式,Action和Func 1、为什么要用委托 我们为什么要有委托?任何东西存在即合理,不合理的也会被时间淘汰掉,委托既然存在肯定有存在的必要,我们来看一下什么时候可以用到委托。 接下来我们有个需求,就是调用一个方法,取出1-1000个数字中所有是10的倍数的数字 public static List<int> GetNum() { List<int\> lst = new List<int>(); //这个算法是最简陋的,但是举这个例子是最合适的 for (int i = 1; i < 1000; i++) { if (i%10==0) { lst.Add(i); } } return lst; } 这个很好写,但是如果有一天,我们的需求变了,想取出1-1000个数字中所有是8的倍数的数字,那我们应该怎么写?是不是只要将if里面的条件改为i%8==0就行了,但是有一点变动的话就修改方法,说明这个方法写的并不好,如果方法很复杂的话修改也很艰难。可能有人会说在添加一个获取是8的倍数的方法,这样的话会增加数据冗余,也就是重复的内容。 如果我们可以传递方法的话,只要传过来一个(有一个参数为int类型返回值为Boolean类型的方法),这个问题将不是问题 public static List<int> GetNum

python — 函数基础知识(二)

这一生的挚爱 提交于 2019-11-28 10:17:39
目录 1 返回值 2 作用域 3 函数小高级 4 函数中高级 1 返回值 def func(arg): # .... return 9 # 返回值为9 默认:return None val = func('adsfadsf') # 1. 让用户输入一段字符串,计算字符串中有多少A字符的个数。有多少个就在文件a.txt中写多少个“李邵奇”。 def get_char_count(data): sum_counter = 0 for i in data: if i == 'A': sum_counter += 1 return sum_counter def write_file(line): if len(line) == 0: return False # 函数执行过程中,一旦遇到return,则停止函数的执行。 with open('a.txt',mode='w',encoding='utf-8') as f: f.write(line) return True content = input('请输入:') counter = get_char_count(content) write_data = "李邵奇" * counter status = write_file(write_data) if status: print('写入成功') else: print('写入失败

数组(Array)的常规操作2

允我心安 提交于 2019-11-28 09:07:21
数组的常规操作2 常用属性 length属性:数组的长度; prototype:原型 常用数组(Array)操作方法 form 在一个类数组中创建一个新的数组实列 isArry is就是判断是否为Array,isArray用于确认传递的值是否为数组(Array) Array.isArray([1,2,3,]);//ture 括号里传递的值是否为数组。 //通常用于判断 concat:合并数组并且返回新数组,不改变原数组。 demo: var a = ["n","s","s","b"];//声明一个数组 var a2 = ["l","z","s"."b"];//第二个数组 console.log(a.concat(a2)); //通过concat将两个数组相连 every: 翻译成中文就是每一个的意思。测试数组里的所有元素都通过了函数测试。 arr.every(callback[,thisArg]); //测试数组里是否所有的元素都通过了,回调函数的测试。 demo: function isBelowThreshold(currentValue) { return currentValue < 40; } var array1 = [1, 30, 39, 29, 10, 13]; console.log(array1.every(isBelowThreshold)); //

mybatis 中的 update 返回值

Deadly 提交于 2019-11-28 08:50:00
摘自:https://www.jianshu.com/p/80270b93082a 如果定义一个如下的 update 函数,那么这个函数的返回值到底是啥意思呢?是受影响的行数吗? 验证之前我们先看看数据库中的数据记录。总共两条数据记录! 数据库链接配置为: jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/ssm jdbc.username=root jdbc.password=123456 下面看看我们的单元测试类。 我们根据 ID 获取记录,然把用户名由 root 改为 root001。如果说返回值是影响的行数的话,那么应该返回 1.跟我们的预期结果 1 是相符的。单元测试会通过。 单元测试通过,我们看看数据库中的记录有没有变化。 看起来貌似没有任何问题。单元测试通过,数据库的确是只有一条记录更改了。这说明 mybatis 的 update 操作返回值的确是受影响的行数。 真的是这样吗 我们知道当数据库中的记录被修改之后,我们在次执行相同的 update 语句将不会影响到数据记录行数。 按照这个逻辑来讲的话,在此执行此单元测试,返回值应该为 0,跟我们的预期值 1 不同,单元测试应该不通过。再次运行单元测试: 我去,单元测试居然神奇般的通过了。。。请注意看,我们在命令行执行 update

Golang中defer的“坑”

被刻印的时光 ゝ 提交于 2019-11-28 08:39:31
1.defer的执行时机 defer的官方定义的为: 包裹defer的函数返回时 包裹defer的函数执行到末尾时 所在的goroutine发生panic时 2.defer 的执行顺序 defer 的执行顺序为LIFO原则,一段程序中后执行的defer代码段会在程序return的时候会优先执行。 defer在匿名返回值和明明返回值函数中的不同表现 。。。。。 来源: https://blog.csdn.net/wxs19970115/article/details/100046374

在java中什么是方法

江枫思渺然 提交于 2019-11-28 08:05:31
方法 为了解决代码重复编写的问题,可以将代码提取出来放在一个{}中,并为这段代码起个名字,这样在每次使用时通过这个名字来调用{}中的代码就可以了。而{}中的代码就是方法,方法有一定功能的一串代码。 概念 方法:方法就是对一段功能逻辑的封装,用来实现重复使用。定义在类中。如果不调用当然就不执行。如果需要并且定义了返回值的类型,必须由return带回一个明确了类型的值。 抽取一段代码放进{}中,起个名字,就是方法。比如常用的“main”就是主方法,是一个程序的入口,是jvm来调用的,一个类中只能有一个主方法。 方法定义在类中。方法和方法之间是平级关系,不能嵌套。所以编写时候要注意编写的位置。 各部分的作用 方法的格式:修饰符/ public static /返回值类型/ void或确定的数据类型 /方法名/ 就是调用此方法时要用的名称 /(参数类型 参数名1,参数类型 参数名2 ....){方法体; return 返回值/ 方法运行的结果,此处由return带回,带回调用后的程序中使用 /;} ()里是参数,{}里是具体实现的功能。语法:public是权限修饰符,static是状态修饰符,void是返回值类型,main是方法名。 上面说了,方法不调用是不执行的。方法和方法之间是平级的,所以可以在主方法的{}里直接调用自定义的方法,但低昂一方法不能再任何一个方法的{}里。 void的意义

中间件

拜拜、爱过 提交于 2019-11-28 07:57:58
一.中间件介绍 中间件是介于request与response处理之间的一道处理过程 直白一点中间件是视图函数执行之前和执行之后都可以做一些额外的操作 settings.py中的MIDDLEWARE列表中存放的就是中间件 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] from django.utils.deprecation import MiddlewareMixin from django.shortcuts import redirect,reverse

你能写一手漂亮的Python函数吗?

你。 提交于 2019-11-28 06:26:09
与多数现代编程语言一样,在 Python 中,函数是抽象和封装的基本方法之一。你在开发阶段或许已经写过数百个函数,但并非每个函数都生而平等。写出「糟糕的」函数会直接影响代码的可读性和可维护性。那么,什么样的函数是「糟糕的」函数呢?更重要的是,要怎么写出「好的」函数呢? 简单回顾 数学中充满了函数,尽管我们可能记不住它们。首先来回忆一下大家最喜欢的话题——微积分。你可能记得这个方程式: f(x) = 2x + 3. 这是一个叫做「f」的函数,含有一个未知数 x,「返回」2*x+3。这个函数可能和我们在 Python 中看到的不一样,但它的基本思想和计算机语言中的函数是一样的。 函数在数学中历史悠久,但在计算机科学中更加神通广大。尽管如此,函数还是存在一些缺陷。接下来我们将讨论一下什么是「好的」函数,以及在出现什么样的征兆时我们需要重构函数。 决定函数好坏的关键 好的 Python 函数与蹩脚 Python 函数的区别是什么?「好」函数的定义之多让人惊讶。从我们的目的出发,我会把好的 Python 函数定义为符合以下清单中大部分规则的函数(有些比较难实现): 命名合理 具有单一功能 包含文档注释 返回一个值 代码不超过 50 行 幂等,尽可能是纯函数 对很多人来说,这个列表可能有些过于严格。但我保证,如果你的函数符合这些规则,你的代码看起来会非常漂亮。下面我将分步讲解各个规则

补充-jdk5新增多线程实现方式

别等时光非礼了梦想. 提交于 2019-11-28 06:14:57
创建多线程的原始两种方式   1、继承Thread类   2、实现Runable接口 jdk5新增的两种方式 1、实现Callable接口   jdk5:新增创建线程方式:实现Callable   * 与使用Runnable相比,Callable功能更强大   * 1、相比run() 方法,可以有返回值    * 2、方法可以抛出异常   * 3、支持泛型的返回值   * 4、需要借助FutureTask类,比如获取返回结果    * Futrue接口    * 1、可以对具体Runnable、Callable任务的执行结果进行取消、查询、是否完成、获取结果等   * 2、FutureTask同时实现了Runnable、Future接口。它既可以作为Runnable被线程执行,   * 又可以作为Future得到Callable的返回值   如何理解实现Callable接口比实现Runnable接口创建多线程的功能强大   * 1、创建call方法可以有返回值   * 2、可以抛出异常,被外面操作捕获,获取异常信息    * 3、Callable支持泛型 (安全) package callable_test; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException;

concurrent.futures:线程池,让你更加高效、并发的处理任务

大憨熊 提交于 2019-11-28 05:51:35
并发任务池 concurrent.futures模块提供了使用工作线程或进程池运行任务的接口。 线程池和进程池的API是一致的,所以应用只需要做最小的修改就可以在线程和进程之间进行切换 这个模块提供了两种类型的类与这些池交互。执行器(executor)用来管理工作线程或进程池,future用来管理计算的结果。 要使用一个工作线程或进程池,应用要创建适当的执行器类的一个实例,然后向它提交任务来运行。 每个任务启动时,会返回一个Future实例。需要任务的结果时,应用可以使用Future阻塞,直到得到结果。 目前已经提供了不同的API,可以很方便地等待任务完成,所以不需要直接管理Future对象。 Future对象 Future对象是一个比较奇特的对象,当然并不仅仅只是在这里有,像asyncio、tornado等,都有Future对象。怎么理解这个对象呢?Future直译是未来对象,换句话说,就是将我们的任务(函数)进行一层包裹,封装为未来对象。可以把Future看成是任务的一个容器,除了能够销毁任务,里面还包含了任务的执行状态。任务没有执行完没有关系,先占一个坑,绑定一个回调。我去异步执行其他的任务,当该任务完成后,通过future.set_result将任务的返回值设置进去,一旦设置了,那么会自动的触发回调函数,可以通过future.result将返回值获取出来。