函数调用

寒假学习记录第十三天

家住魔仙堡 提交于 2020-02-13 21:25:10
今天继续学习Python 函数的定义 函数是一段具有特定功能的、可重用的语句组 使用函数主要有两个目的:降低编程难度和代码重用 Python使用def保留字定义一个函数 def<函数名>(<参数列表>): <函数体> return<返回值列表> 函数名可以是任何有效的Python标识符 参数列表是调用该函数是传递给它的值,可以有零个(保留圆括号)、一个或多个(用逗号分隔) 函数体是函数每次被调用是执行的代码 当需要返回值时使用保留字return和返回值刘表,否则函数可以没有return语句,在函数体结束时将控制权返回给调用者 函数调用和执行的一般形式 <函数名>(<参数列表>) 函数的调用过程 调用程序在调用处暂停执行 在调用时将实参复制给形参 执行函数体语句 函数调用结束给出返回值,程序回到调用前的暂停处继续执行 lambda函数 lambda函数又称匿名函数,将函数名作为函数结果返回 <函数名>=lambda<参数列表>:<表达式> lambda函数与正常函数一样,等价于下面表达式: def<函数名>(<参数列表>): return<表达式> lambda函数用于定义简单的、能够在一行内表示的函数,返回一个函数类型 f=lambda q,w,e,r:q+w+e+r f(1,2,3,4) 10 lambda函数用于需要函数对象的场景 函数的参数传递 函数可定义可选参数

装饰器

梦想与她 提交于 2020-02-13 19:56:21
装饰器 在Python这个国家里,装饰器以及后面讲到的迭代器,生成器都是十二分重要的高级函数。 如果将装饰器比作取经路上的一个大boss,那么想干掉它必须拿到三件法宝 法宝一(作用域): 法宝二(函数即对象): 在python的世界里,函数和我们之前的[1,2,3],'abc',8等一样都是对象,而且函数是最高级的对象(对象是类的实例化,可以调用相应的方法,函数是包含变量对象的对象,牛逼!)。 1 def foo(): 2 print('i am the foo') 3 bar() 4 5 def bar(): 6 print('i am the bar') 7 8 foo() 9 # def bar(): #报错 10 # print('i am the bar') 带着这个问题,我们聊一聊函数在内存的存储情况: 图1 函数对象的调用仅仅比其它对象多了一个()而已!foo,bar与a,b一样都是个变量名。 那上面的问题也就解决了,只有函数加载到内存才可以被调用。 既然函数是对象,那么自然满足下面两个条件: 1. 其可以被赋给其他变量 1 def foo(): 2 print('foo') 3 bar=foo 4 bar() 5 foo() 6 print(id(foo),id(bar)) #4321123592 4321123592 2. 其可以被定义在另外一个函数内(作为参数

关于多个装饰器装饰一个函数执行顺序的问题

放肆的年华 提交于 2020-02-13 18:04:31
我们通过两个实例来解开我们的疑惑: 实例一: def war1(func): def inner(*args, **kwargs): print("======war1 start=====") func(*args, **kwargs) print("======war1 end=====") return inner def war2(func): def inner(*args,**kwargs): print("======war2 start=====") func(*args,**kwargs) print("======war2 end=====") return inner @war1 @war2 def f(): print("****self****") f() 实际输出结果为: ======war1 start===== ======war2 start===== ****self**** ======war2 end===== ======war1 end===== 好吧这个结果似乎有点出乎我们的意料:不是说好的谁近谁先来的嘛(我裤子都脱了,结果。。。) 我们自己臆想的结果: ======war2 start===== ======war2 end===== ======war1 start===== ======war1 end===== ****self

setTimeout 和 setInterval 计时的区别

北慕城南 提交于 2020-02-13 17:07:40
window对象有两个主要的定时方法,分别是setTimeout 和 setInteval 他们的语法基本上相同,但是完成的功能取有区别。 setTimeout方法是定时程序,也就是在什么时间以后干什么。干完了就拉倒。 setInterval方法则是表示间隔一定时间反复执行某操作。 如果用setTimeout实现setInerval的功能,就需要在执行的程序中再定时调用自己才行。如果要清除计数器需要 根据使用的方法不同,调用不同的清除方法: 例如:(1): t=setTimeout('northsnow()',1000); clearTimeout(t); (2): t=setInterval('northsnow()',1000); clearInteval(t); setTimeout() 语法 var t=setTimeout("javascript语句",毫秒); 第一个参数是含有 JavaScript 语句的字符串。这个语句可能诸如 "alert('5 seconds!')",或者对函数的调用,诸如 alertMsg()"。 第二个参数指示从当前起多少毫秒后执行第一个参数。 提示:1000 毫秒等于一秒。 实例 当下面这个例子中的按钮被点击时,一个提示框会在5秒中后弹出。 <html> <head> <script type="text/javascript">

随笔5

泪湿孤枕 提交于 2020-02-13 16:14:47
随笔5 2009-02-13 16:28 (分类: 工作资料 ) *************************************** 2月13 windows应用程序WinForm **************************************** 宿主程序: WinForm是.Net开发平台中对Windows Form的一种称谓。.Net 为开发WinForm的应用程序提供了丰富的Class Library(类库)。这些 WinFrom 类库支持RAD(快速应用程序开发),这些类库被封装在一个名称空间之中,这个名称空间就是System.Windows.Forms。在此名 称空间中定义了许多类,在开发基于.Net的GUI应用程序的时候,就是通过继承和扩展这些类才使得我们的程序有着多样的用户界面。 **类似于java中的GUI,但是可以拖动按钮,比java方便很多** 分部类:类的合并 -------------------------------------------- // // button1 // this.button1.Location = new System.Drawing.Point(184, 52); this.button1.Name = "Test"; this.button1.Size = new System.Drawing

递归、尾递归和使用Stream延迟计算优化尾递归

ε祈祈猫儿з 提交于 2020-02-13 10:41:58
我们在学数据结构的时候必然会接触栈(Stack),而栈有一个重要的应用是在程序设计语言中实现递归。递归用途十分广泛,比如我们常见的阶乘,如下代码: 1234 public static int (int n) { if (n == 1) return 1; return n * func1(n - 1);} 就可以用递归实现,而且实现相当简洁。如果要计算n的阶乘,那么只需知道n-1的阶乘再乘以n,同理依次类推,直到当我们计算2的阶乘的时候,只需知道1的阶乘,显然这是递归终止条件,再层层向上返回,直至计算出n的阶乘即可。 从上面的分析可以看出,如果我们要进行递归求解某一问题,需要满足以下两个条件: 能将一个问题转变为另一个新问题,而新问题的解法与原问题相同或者类同,并且新问题的数据规模更小,问题简化。 使用递归的情景是当前数据规模较大,直接计算比较困难,那么可以将该问题进行分解,数据规模越来越小,计算也越来越容易,其实这是“分治法”的体现。 存在递归终止条件,或者说递归的边界。 递归的终止条件是必须的,既然当前问题可以分解,那么就必须存在一个“极限”,分解到什么程度?到哪里停止? “分治法”求解递归问题算法有一个一般形式: 1234 void p(参数列表) { if (递归终止条件成立) 直接求解; // 递归终止条件 else p(较小的参数) // 递归步骤}

C++学习笔记七-流

北战南征 提交于 2020-02-13 09:09:09
C++ 的输入/输出(input/output)由标准库提供。标准库定义了一族类型,支持对文件和控制窗口等设备的读写(IO)。还定义了其他一些类型,使 string 对象能够像文件一样操作,从而使我们无须 IO 就能实现数据与字符之间的转换。这些 IO 类型都定义了如何读写内置数据类型的值。此外,一般来说,类的设计者还可以很方便地使用 IO 标准库设施读写自定义类的对象。类类型通常使用 IO 标准库为内置类型定义的操作符和规则来进行读写。 一、面向对象的标准库: iostream : istream 从流中读取 ostream 写到流中去 iostream 对流进行读写;从 istream 和 ostream 派生而来 fstream : ifstream 从文件中读取;由 istream 派生而来 ofstream 写到文件中去;由 ostream 派生而来 fstream 读写文件;由 iostream 派生而来 sstream : istringstream 从 string 对象中读取;由 istream 派生而来 ostringstream 写到 string 对象中去;由 ostream 派生而来 stringstream 对 string 对象进行读写;由 iostream 派生而来 二、国际字符的支持: 每一个 IO 头文件都定义了 char 和 wchar_t

python 函数

怎甘沉沦 提交于 2020-02-13 09:02:17
一. 什么是函数    函数: 对代码块和功能的封装和定义.等到需要使用这个功能的时候直接调用就可以了. 函数名 命名规则和变量一样 二. 函数定义, 函数名, 函数体以及函数的调用    语法: def 函数名(形参) :       函数体(代码块)    调用 :      函数名(实参) #定义一个函数名为day的函数,里面打印七条语句,从周一到周日. def day(): print('周一') print('周二') print('周三') print('周四') print('周五') print('周六') print('周日') day() #调用函数,然后执行函数day # 周一 # 周二 # 周三 # 周四 # 周五 # 周六 # 周日 三. 函数的返回值    函数的返回值: return, 函数执行完毕. 不会执行后面逻辑 1. 如果函数中不写return返回None 2. 只写return 返回None 3. return 返回值. 返回一个值 4. return 值1, 值2,... 返回多个值.多个值需要用,隔开.调用方接收到的是元组 def day(): print('周一') print('周二') print('周三') print('周四') print('周五') print('周六') print('周日') return '一周过完了'

Twisted简介

杀马特。学长 韩版系。学妹 提交于 2020-02-13 07:51:14
Twisted是用Python实现的基于事件驱动的网络引擎框架,Twisted支持许多常见的传输及应用层协议,包括TCP、UDP、SSL/TLS、HTTP、IMAP、SSH、IRC以及FTP。就像Python一样,Twisted也具有“内置电池”(batteries-included)的特点。Twisted对于其支持的所有协议都带有客户端和服务器实现,同时附带有基于命令行的工具,使得配置和部署产品级的Twisted应用变得非常方便。 Transports Transports代表网络中两个通信结点之间的连接。Transports负责描述连接的细节,比如连接是面向流式的还是面向数据报的,流控以及可靠性。TCP、UDP和Unix套接字可作为transports的例子。它们被设计为“满足最小功能单元,同时具有最大程度的可复用性”,而且从协议实现中分离出来,这让许多协议可以采用相同类型的传输。Transports实现了ITransports接口,它包含如下的方法: write 以非阻塞的方式按顺序依次将数据写到物理连接上 writeSequence 将一个字符串列表写到物理连接上 loseConnection 将所有挂起的数据写入,然后关闭连接 getPeer 取得连接中对端的地址信息 getHost 取得连接中本端的地址信息

C++ 标准IO库

最后都变了- 提交于 2020-02-13 07:19:06
《C++ Primer 4th》读书笔记 C++ 的输入/输出(input/output)由标准库提供。标准库定义了一族类型,支持对文件和控制窗口等设备的读写(IO)。还定义了其他一些类型,使 string对象能够像文件一样操作,从而使我们无须 IO 就能实现数据与字符之间的转换。 IO 类型在三个独立的头文件中定义:iostream 定义读写控制窗口的类型,fstream 定义读写已命名文件的类型,而 sstream 所定义的类型则用于读写存储在内存中的 string 对象。 Header Type iostream istream 从流中读取 ostream 写到流中去 iostream 对流进行读写;从 istream 和 ostream 派生而来 fstream ifstream 从文件中读取;由 istream 派生而来 ofstream 写到文件中去;由 ostream 派生而来 fstream 读写文件;由 iostream 派生而来 sstream istringstream 从 string 对象中读取;由 istream 派生而来 ostringstream 写到 string 对象中去;由 ostream 派生而来 stringstream 对 string 对象进行读写;由 iostream 派生而来 如果函数有基类类型的引用形参时