函数调用

Python函数编程——列表生成式和生成器

六月ゝ 毕业季﹏ 提交于 2020-03-06 02:50:21
Python函数编程——列表生成式和生成器 一、列表生成式 现在有个需求,现有列表a= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ,要求你把列表里的每个值加1,你怎么实现? 1、二逼青年版 生成一个新列表b,遍历列表a,把每个值加1后存在b里,最后再把a=b, 这样二逼的原因不言而喻,生成了新列表,浪费了内存空间。 >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> b = [] >>> for i in a:b.append(i+1) ... >>> b [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> a = b >>> a [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 2、普通青年版 a = [1,3,4,6,7,7,8,9,11] for index,i in enumerate(a): a[index] +=1 print(a) 3、略屌青年版 >>> a [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> a = map(lambda x:x+1, a) >>> a >>> for i in a:print(i) ... 3 5 7 9 11 4、装逼青年版 >>> a = [i+1 for i in range(10)] >>> a [1, 2, 3, 4,

py04_03:函数之递归函数

Deadly 提交于 2020-03-06 02:15:05
递归函数的定义:在函数内部,函数自身调用自己的return值,就叫做递归函数   要求:1. 必须有一个明确的结束条件:      2. 每次相对减少,不可能增加,否则永远不能结束,则出错      3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)  来源: https://www.cnblogs.com/yeyu1314/p/12424100.html

第八章、数据库后台编程技术

佐手、 提交于 2020-03-06 01:07:00
第八章、数据库后台编程技术 内容提要: 1、掌握存储过程的定义与使用 2、掌握用户定义函数的创建与使用 3、掌握触发器的定义与使用 4、掌握游标的定义与使用 第一节 存储过程 1、基本概念 使用T-SQL语言编写代码时,有两种方式存储和执行代码: (1)在客户端存储代码,通过客户端程序或SQL命令向DBMS发出操作请求,由DBMS将结果返回给用户程序。 (2)以子程序的形式将程序模块存储在数据库中,供有权限的用户通过调用反复执行。 存储过程 :即存储在数据库中供所有用户程序调用的子程序。 存储过程分为三类 系统存储过程 用户自定义存储过程(如果没有说明的话默认) 扩展存储过程 用户自定义存储过程 是由用户创建并能完成某一特定功能(如查询用户所需数据信息)的存储过程。本节将详细介绍用户自定义的存储过程。 以下三个存储过程即为用户自定义存储过程: 扩展存储过程 是 SQL Server 可以动态装载并执行的动态链接库 (DLL)。扩展存储过程使您得以使用象 C 这样的编程语言创建自己的外部例程。对用户来说,扩展存储过程与普通存储过程一样,执行方法也相同。 存储过程的优点 ① 极高的执行效率。(所有的命令都是以批处理的方式处理) ② 增强代码的重用性和共享性。 ③ 使用存储过程可以减少网络流量。 ④ 使用存储过程保证安全性。 ⑤ 在大型数据库中,应用程序访问数据库的最主要方式就是存储过程

python 封装

 ̄綄美尐妖づ 提交于 2020-03-06 00:55:03
1 封装 封装,即隐藏对象的属性和实现细节,仅对外公开接口。 2 为什么要封装 封装数据:可以保护隐私(比如银行卡号、密码) 封装方法:隔离复杂度(把内部具体的复杂实现过程隐藏起来。) 在python中因为没有像java中那样的接口实现。所以我们这里说的向外提供的接口,是函数,也叫接口函数。 3 封装有哪些表现 3.1 python自带的封装 创建一个类或对象,就会创建二者的命名空间,只需要用类名.或对象.的方式访问命名空间里的变量名,就是一种封装。 >>> r1.nickname '德玛西亚之力' >>>Riven.camp 'Noxus' 3.2 类中的封装 将类中的某些变量属性和方法隐藏(或者说定义为私有),只在类内部使用、访问,或留下少量函数接口给外部访问。 在python中,在变量名或函数名前加“__”来实现属性的隐藏(设置为私有) class A: __x=0 def __init__(self): self.__y = 10 def __func(self): print("from A") a=A() #print(a.__y) #AttributeError: 'A' object has no attribute '__y' #a.__func() #AttributeError: 'A' object has no attribute '__func'

阻塞,非阻塞,同步,异步

孤街醉人 提交于 2020-03-06 00:45:02
先说说阻塞与非阻塞,这主要和程序等待消息时的状态有关 1、阻塞 程序会阻塞在某一个函数,而不往下执行,就如挂在那里一样,所有的其他业务也都不执行,为一直等到消息到来才往下执行。 2、非阻塞 程序不会阻塞在某一个函数,不等待消息到来,立即返回,往下执行。 举个例子,TCP协议中的send,系统会为其分配一块发送缓存区,假设现在总的缓存 区的大小为1000.,而缓存区里已经有了500个数据,这时调用send,发送1000个字节数据,这时如果在阻塞模式下,send的会先最多的数据放入缓存,直到缓存区满,然后程序就会阻塞在那里,一直等到将所有数据全部发出去为止,而如果在非阻塞模式下,send的会先将最多的数据放入缓存之后,就马上返回,剩余数据下回接着发送,不会卡在send函数中。 同步和异步这两个概念,其实是与消息通知机制有关的。 1、同步 发送消息,等待消息处理完后,才往下执行。就如MFC里的SendMessage(), 2、异步 发送消息,不等待消息处理完,就往下执行,让后通过特定的接口或者事件,消息通知你事情完成了。如MFC里的PostMessage() 粗略的讲了一下以上的两个概念,估计大家会问,那么阻塞与同步,非阻塞与异步有啥区别,用例说明。 比如我们现在去银行,你可以选择两种方式,取票等待和排队等待,如果你排队等待,你就得等前面所有人都办理完了,才能办理业务

JAVA入门-方法/函数

断了今生、忘了曾经 提交于 2020-03-05 21:14:40
方法/函数 这是干啥的?啥是方法?为啥叫函数? 对于一些复杂的代码逻辑,如果希望重复使用这些代码,并且做到“随时任意使用”,那么就可以将这些代码放在一个大括号“{}”当中,并且起一个名字。使用代码的时候,直接找到名字调用即可。 基本格式 : 修饰符 返回值类型 方法名称(参数类型 参数名称,参数类型 参数名称) { 方法体 return 返回值; } 一个方法定义后,没有调用就不会执行,想要执行就必须调用它。 无返回值格式 : 修饰符 void 方法名称 (参数类型 参数名称) { 方法体 return ; //通常省略 } 返回值类型固定为void 常见的调用方式 1.单独调用 test( 1 ); 这种方式用不到方法的返回值 2.打印调用 System . out . println ( test ( 1 ) ) ; 这种方式直接打印返回值 3.赋值调用 int a = test ( 1 ) ; 将方法的返回值直接赋给一个变量。 来源: CSDN 作者: Toolman-z 链接: https://blog.csdn.net/weixin_45956558/article/details/104674529

如何创建一个基本JQuery的插件

帅比萌擦擦* 提交于 2020-03-05 19:53:00
如何创建一个基本的插件 有时您希望在整个代码中提供一些功能。 例如,也许你想要一个单一的方法,你可以调用一个jQuery选择,对选择执行一系列的操作。 在这种情况下,您可能需要编写一个插件。 链接 jQuery如何工作101:jQuery对象方法 在我们编写自己的插件之前,首先要了解一下jQuery如何工作。 看看这段代码: 1 $( "a" ).css( "color", "red" ); 这是一些很基础的jQuery代码,但你知道幕后发生了什么吗? 无论何时使用该 $ 函数来选择元素,它返回一个jQuery对象。 这个对象包含了所有的你已经使用(方法 .css() , .click() 等)和所有适合你的选择要素。 jQuery对象从对象中获取这些方法 $.fn 。 这个对象包含了所有的jQuery对象方法,如果我们想编写自己的方法,它也需要包含这些方法。 链接 基本插件创作 假设我们要创建一个插件,使一组检索到的元素中的文本变为绿色。 我们所要做的就是添加一个调用的函数 greenify 来 $.fn ,这将是可用的,就像任何其他的jQuery对象的方法。 1 2 3 4 五 $.fn.greenify = function() { this.css( "color", "green" ); }; $( "a" ).greenify(); // Makes all the

拥抱函数式编程吧,用得非常爽! 几十年来我都在用面向对象的语言编程。我用过的第一个面向对象的语言是 C++,后来是 Smalltalk,最后是 .NET 和 Java。 我曾经对使用继承、封装和多态充

喜夏-厌秋 提交于 2020-03-05 15:31:37
拥抱函数式编程吧,用得非常爽! 几十年来我都在用面向对象的语言编程。我用过的第一个面向对象的语言是 C++,后来是 Smalltalk,最后是 .NET 和 Java。 我曾经对使用继承、封装和多态充满热情。它们是范式的三大支柱。 我渴望实现重用之美,并在这个令人兴奋的新天地中享受前辈们积累的智慧。 想到将现实世界的一切映射到类中,使得整个世界都可以得到整齐的规划,我无法抑制自己的兴奋。 然而我大错特错了。01 继承,倒塌的第一根支柱 乍一看,继承似乎是面向对象范式的最大优势。 所有新手教程讲解继承时都会拿出最简单的继承的例子,而这个例子似乎很符合逻辑。 然后就是满篇的重用了。甚至以后的一切都是重用了。 我囫囵吞下这一切,然后带着新发现兴冲冲地奔向世界了。 1. 香蕉猴子丛林问题 带着满腔的信仰和解决问题的热情,我开始构建类的层次结构然后写代码。似乎一切皆在掌控中。 我永远不会忘记我准备从已有的类继承并实现重用的那一天。那是我期待已久的时刻。 后来有了新的项目,我想起了另一个项目里我很喜欢的那个类。 没问题,重用拯救一切。我只需要把那个类拿过来用就好了。 嗯……其实……不仅是那一个类。还得把父类也拿过来。但……应该就可以了吧。 额……不对,似乎还需要父类的父类……还有……嗯,我们需要所有的祖先类。好吧好吧……搞定了。没问题。 不错。但编译不过,怎么回事?哦我知道了…

js中级总结

与世无争的帅哥 提交于 2020-03-05 13:29:56
js中级总结   this问题;   this是JavaScript的关键字 用途:指向某一个对象   如何判断this的指向   函数内:两种情况:1.以函数形式调用(不带 . 指向window )            2.以方法形式调用(带 . this指向 . 前面的)   函数外:this指向window   1.自调用函数内this都是window   2.定时器this指向window   3.事件里面的this 指向触发事件的元素   4.构造函数里this指向他的实例(子对象)   怎样替换函数内的this?   1.call() 替换.前面的this并执行那个函数   2.apply()   3.bind()   A.fn.call(B,5) B取代fn中的this,并调用fn()   call和apply,bind只能是函数(方法)内,或者是函数对象   call前面对象必须是函数对象   var a=45;   var b={     a:12     }   function fn(){     console.log(this.a)     }   fn.call(b)   面向对象:   以对象的方法来写业务逻辑   1.单例模式 var obj={}   2.工厂模式 function fn(){            var obj={}     

Linux中的线程局部存储(一)

∥☆過路亽.° 提交于 2020-03-05 09:43:37
在 Linux系统中使用C/C++进行多线程编程时,我们遇到最多的就是对同一变量的多线程读写问题,大多情况下遇到这类问题都是通过锁机制来处理,但这对 程序的性能带来了很大的影响,当然对于那些系统原生支持原子操作的数据类型来说,我们可以使用原子操作来处理,这能对程序的性能会得到一定的提高。那么对 于那些系统不支持原子操作的自定义数据类型,在不使用锁的情况下如何做到线程安全呢?本文将从线程局部存储方面,简单讲解处理这一类线程安全问题的方法。 一、数据类型 在C/C++程序中常存在全局变量、函数内定义的静态变量以及局部变量,对于局部变量来说,其不存在线程安全问题,因此不在本文讨论的范围之内。全局变量 和函数内定义的静态变量,是同一进程中各个线程都可以访问的共享变量,因此它们存在多线程读写问题。在一个线程中修改了变量中的内容,其他线程都能感知并 且能读取已更改过的内容,这对数据交换来说是非常快捷的,但是由于多线程的存在,对于同一个变量可能存在两个或两个以上的线程同时修改变量所在的内存内 容,同时又存在多个线程在变量在修改的时去读取该内存值,如果没有使用相应的同步机制来保护该内存的话,那么所读取到的数据将是不可预知的,甚至可能导致 程序崩溃。 如果需要在一个线程内部的各个函数调用都能访问、但其它线程不能访问的变量,这就需要新的机制来实现,我们称之为Static memory local to