函数调用

Python基础知识总结笔记(四)函数

眉间皱痕 提交于 2020-02-22 14:37:48
Python基础知识总结笔记(四)函数 python中的函数 函数中的参数 变量作用域 偏函数PFA 递归函数 高阶函数 BIFs中的高阶函数 匿名函数lambda 闭包Closure 装饰器Decorator 函数式编程Functional Programming 每天都有程序员定时讲解Python技术,分享一些学习的方法和需要留意的小细节,要资料加 624440745 1. python中的函数 ■ 函数的意义: ■1.对输入进行变换映射后输出 ,可以进行反复调用。以函数名对代码块进行封装 ■2.过程化 VS 结构化 ■ 函数的创建及结构: ■定义函数名:def foo1(num): ■参数:num ■函数体 ■返回 □有无返回: 有返回值:return返回的是对象,(如返回对象数>1返回元组)。且返回的为最后的一个return值。 无返回值 :无返回值或者return后为空。 print可以有很多,但是return只有一个。 □return与yield的区别: print:不返回任何的函数 return 结束函数,返回值,当函数被调用时,遇到结尾或return时就准备结束了。只显示最后一个return的值。 yield:丢出一个数,对象变成了生成器–记录当前运行到哪里了。 #函数的意义 n=5 for i in range(n): print(i) #

关于 javascript 中的 this

∥☆過路亽.° 提交于 2020-02-22 13:05:24
首先推荐两篇好文章,我对 this 的理解都靠这两篇文章了 http://www.cnblogs.com/rubylouvre/archive/2009/11/13/1602122.html this 的值取决于 function 被调用的方式,一共有四种, 如果一个 function 是一个对象的属性,该 funtion 被调用的时候,this 的值是这个对象。如果 function 调用的表达式包含句点(.)或是 [],this 的值是句点(.)或是 [] 之前的对象。如myObj.func 和myObj["func"] 中,func 被调用时的 this 是myObj。 如果一个 function 不是作为一个对象的属性,那么该 function 被调用的时候,this 的值是全局对象。当一个 function 中包含内部 function 的时候,如果不理解 this 的正确含义,很容易造成错误。这是由于内部 function 的 this 值与它外部的 function 的 this 值是不一样的。解决办法是将外部 function 的 this 值保存在一个变量中,在内部 function 中使用它来查找变量。 如果在一个 function 之前使用 new 的话,会创建一个新的对象,该 funtion 也会被调用,而 this 的值是新创建的那个对象

Python使用Ctypes与C/C++ DLL文件通信过程介绍及实例分析

坚强是说给别人听的谎言 提交于 2020-02-22 12:59:40
项目中可能会经常用到第三方库,主要是出于程序效率考虑和节约开发时间避免重复造轮子。无论第三方库开源与否,编程语言是否与当前项目一致,我们最终的目的是在当前编程环境中调用库中的方法并得到结果或者借助库中的模块实现某种功能。这个过程会牵涉到很多东西,本篇文章将简要的介绍一下该过程的一些问题。 1.背景 多语言混合编程可以弥补某一种编程语言在性能表现或者是功能等方面的不足。虽然所有的高级语言都会最终转换成汇编指令或者最底层的机器指令,但是语言本身之间的千差万别很难一言以蔽之,这对不同语言之间相互通信造成很大的障碍。 工作中需要用python完成一项功能,但是所有现有的python库都不满足需求。最终找到了一个开源的C++库,编译得到动态库被python调用才完成工作需求。虽然整个过程耗时不多,但是期间碰到很多的问题,而且这些问题都很有思考价值。 除了这篇博文外,后续还将有一到两篇文章通过具体的实例讲解一下跨语言调用。 2.问题思考 在进行具体的介绍之前,先来思考一下调用外部库或者自己实现库所牵涉的一些一般性的问题。这样或许实际中操作使用时会理解的更加深刻,遇到问题也能够逐项的排查。 如果用C语言写的库调用了Linux的system call,纵使C本身是跨平台的,那么该库也不可能在Window上被使用,即便我们能拿到源码。这里有两个核心问题: 是否开源 是否跨平台 如果库的实现不依赖平台

this关键字详解

[亡魂溺海] 提交于 2020-02-22 09:21:29
关于this的绑定 默认绑定 this 默认 绑定到 windows 在全局环境中,this默认绑定到 windows 函数独立调用时,this默认绑定到 windows 被嵌套函数独立调用时, this 默认绑定到 windows IIFE 立即执行函数, 实际上是函数申明之后立即调用 闭包函数, 是独立调用,而不是方法调用。 var a = true; function fun(){ function test(){ console.log(a) } return test; } var o = { a : false; fun : fun; } o.fun()(); // true 由于闭包的this默认绑定到window对象,但又常常需要访问嵌套函数的this,所以常常在嵌套函数中使用var that = this,然后在闭包中使用that替代this,使用作用域查找的方法来找到嵌套函数的this值 var a = true; function fun(){ var that = this; // 用来记录 fun 的 this function test(){ console.log(that.a) } return test; } var o = { a : false; fun : fun; } o.fun()(); // false 隐式绑定 在方法调用时

模块和包

只谈情不闲聊 提交于 2020-02-22 05:17:06
1. 模块和包 容器: 列表、元组、字符串、字典等,对数据的封装 函数: 对语句的封装 类: 对方法和属性的封装,即对函数和数据的封装 而模块(module)就是个程序,一个 .py 文件,模块分为三类: Python 标准库: 如 time、random 等 第三方模块: 如 requests、beautiful 等 应用程序自定义模块: 用户自定义模块 随机程序代码越写越多,每个文件里面的代码越来越长,越来越不容易维护。使用模块的好处: 模块化代码: 将不同功能的代码归类,提高代码的可维护性 避免重复造轮子: 编写代码可以不必从零开始,可以引用别人已经写好的模块,Python 有很多优秀的第三方模块 命名空间: 每个模块单独维护一个命名空间,不同模块相同函数名、变量名不会有冲突 Tips: 自定义模块的时候,不要与内置的模块名有冲突,不然会影响内置模块 1.1 包 为了避免不同的人编写的模块名相同,Python 引入了按目录来组织模块的方法 —— 包(Package) 不同包下的模块,名字相同不会有冲突,只要顶层的包名不冲突就行。 如何创建一个包: 创建一个文件夹,里面存放相应模块文件,文件夹名字即为包名 在文件夹中创建一个 __init__.py 文件,可以为空 1.2 导入模块 导入模块的几种常用方法: >>> import 模块1, 模块2... # sys.path

python中os模块中文帮助

佐手、 提交于 2020-02-22 02:22:24
python中os模块中文帮助文档 文章分类:Python编程 python中os模块中文帮助文档 翻译者:butalnd 翻译于2010.1.7——2010.1.8,个人博客: http://butlandblog.appspot.com/ 注此模块中关于unix中的函数大部分都被略过,翻译主要针对WINDOWS,翻译速度很快,其中很多不足之处请多多包涵。 这个模块提供了一个轻便的方法使用要依赖操作系统的功能。 如何你只是想读或写文件,请使用open() ,如果你想操作文件路径,请使用os.path模块,如果你想在命令行中,读入所有文件的所有行,请使用 fileinput模块。使用tempfile模块创建临时文件和文件夹,更高级的文件和文件夹处理,请使用shutil模块。 os.error 内建OSError exception的别名。 os.name 导入依赖操作系统模块的名字。下面是目前被注册的名字:'posix', 'nt', 'mac', 'os2', 'ce', 'java', 'riscos'. 下面的function和data项是和当前的进程和用户有关 os.environ 一个mapping对象表示环境。例如,environ['HOME'] ,表示的你自己home文件夹的路径(某些平台支持,windows不支持) ,它与C中的getenv("HOME")一致。

Python基础知识总结笔记(四)函数

一个人想着一个人 提交于 2020-02-21 19:33:26
Python基础知识总结笔记(四)函数 python中的函数 函数中的参数 变量作用域 偏函数PFA 递归函数 高阶函数 BIFs中的高阶函数 匿名函数lambda 闭包Closure 装饰器Decorator 函数式编程Functional Programming 1. python中的函数 ■ 函数的意义: ■1.对输入进行变换映射后输出 ,可以进行反复调用。以函数名对代码块进行封装 ■2.过程化 VS 结构化 ■ 函数的创建及结构: ■定义函数名:def foo1(num): ■参数:num ■函数体 ■返回 □有无返回: 有返回值:return返回的是对象,(如返回对象数>1返回元组)。且返回的为最后的一个return值。 无返回值 :无返回值或者return后为空。 print可以有很多,但是return只有一个。 □return与yield的区别: print:不返回任何的函数 return 结束函数,返回值,当函数被调用时,遇到结尾或return时就准备结束了。只显示最后一个return的值。 yield:丢出一个数,对象变成了生成器–记录当前运行到哪里了。 #函数的意义 n=5 for i in range(n): print(i) # 以函数名对以上代码块进行封装 def foo(num): #函数名foo; 参数num for i in range(num):

实战分析一个运行起来会卡死的Go程序

时光怂恿深爱的人放手 提交于 2020-02-21 08:20:27
序言 最近一位非常热心的网友建议结合demo来分析一下goroutine的调度器,而且还提供了一个demo代码,于是便有了本文,在此对这位网友表示衷心的感谢! 这位网友提供的demo程序可能有的gopher以前见过,已经知道了具体原因,但本文假定我们是第一次遇到这种问题,然后从零开始,通过一步一步的分析和定位,最终找到问题的根源及解决方案。 虽然本文不需要太多的背景知识,但最好使用过gdb或delve调试工具,了解汇编语言及函数调用栈当然就更好了。 本文我们需要重点了解下面这3个内容。 调试工具无法准确显示函数调用栈时如何找到函数调用链; 发生GC时,如何STOP THE WORLD; 什么时候抢占调度不会起作用以及如何规避。 本文的实验环境为AMD64 Linux + go1.12 Demo程序及运行现象 package main import( "fmt" "runtime" "time" ) func deadloop() { for { } } func worker() { for { fmt.Println("worker is running") time.Sleep(time.Second * 1) } } func main() { fmt.Printf("There are %d cores.\n", runtime.NumCPU()) goworker()

Python类变量与实例变量及成员函数修饰方式说明(与Java定义方式进行类比)

大兔子大兔子 提交于 2020-02-21 08:04:47
Python类中的变量有类变量和实例变量之分。 类变量:变量绑定在类上,同一个类之间的共享变量,类比于Java中的静态变量static 公有变量定义 Java 的定义方式 class Test{ public static class_variable = "123" } Python3 定义方式 class Test: class_variable = "123" 私有变量定义 Java 的定义方式 class Test{ private static class_variable = "123" } Python3 定义方式 class Test: __class_variable = "123" 实例变量:变量绑定在类的实例上,同一个类的不同实例之间不共享,类比于Java中的成员变量 公有变量定义 Java 的定义方式 class Test{ public instance_variable = "123" } Python3 定义方式 class Test: def __init__(self): self.instance_variable = "123" 私有变量定义 Java 的定义方式 class Test{ private instance_variable = "123" } Python3 定义方式 class Test: def __init__(self)

C++ Primer Plus 笔记第十三章

时光怂恿深爱的人放手 提交于 2020-02-21 05:47:21
类继承 本章内容:    is-a 关系的继承;    如何以公有方式从一个类派生出另一个类;    保护访问;    构造函数成员初始化列表;    向上和向下强制转换;    虚成员函数;    早期(静态)联编与晚期(动态)联编;    抽象基类;    纯虚函数;    何时及如何使用公有继承    面向对象编程的主要目的之一是提供可重用的代码;    C++类提供了更高层次的重用性,类库由类声明和实现构成,因为类组合了数据表示和类方法;    C++提供了比修改代码更好的方法来扩展和修改类——类继承; 13.1 一个简单的基类    从一个类派生出另一个类,原始类成为基类,继承类称为派生类;    程序清单13.1 tabtenn0.h  1 #ifndef TABTENN0_H_ 2 #define TABTENN0_H_ 3 4 class TableTennisPlayer 5 { 6 private: 7 enum {LIM = 20}; 8 char firstname[LIM]; 9 char lastname[LIM]; 10 bool hasTable; 11 public: 12 TableTennisPlayer(const char * fn = "none", const char * ln = "none", bool ht = false);