python 学习笔记三 (元编程)】的更多相关文章

笔记三:函数 笔记二已取消置顶链接地址:http://www.cnblogs.com/dzzy/p/5289186.html 函数的作用: 給代码段命名,就像变量給数字命名一样 可以接收参数,像argv那样 创建脚本小程序 基础的函数用法: #-*- coding:utf-8 -*- def print_two(*args): arg1,arg2=args print "arg1:%s arg2:%s" %(arg1,arg2) def print_two_again(arg1,arg…
元编程 什么是元编程(metaprogramming) 利用模板可以进行编译期计算(数值计算,型式计算和代码计算)的特点进行程序设计 为什么可以进行元编程? C++是两层语言:执行编译期计算的代码称为静态代码,执行运行期计算的代码称为动态代码 模板可用于函数式编程,强调抽象计算,重视模块化,使用递归控制流程 模板是图灵完备的:理论上,模板可以执行任何计算任务 为什么需要元编程? 编译期计算可以使代码更通用,更易用,提升程序执行性能 元编程的缺点 相对结构化编程,编译效率比较低 代码丑陋不堪,阅读…
廖雪峰python3学习笔记: # 高阶函数 将函数作为参数传入,这样的函数就是高阶函数(有点像C++的函数指针) def add(x, y): return x+y def mins(x, y): return x-y # 高阶函数 def computex, y, f): return f(x) + f(y) >>> computex(1,2,add) 3 >>> compute(4, 1, mins) 3 f = add >>>f(1,2) 3…
#动态创建类 # type(class_name, tuple_of_parent_class, dict_of_attribute_names_and_values), 第二个参数为继承关系,可以为空,第三个描述类应该具有的attribute #正常创建类 class TestClass2(object): attr = 1 def __init__(self,name): self.name = name def name(self): return self.name #动态创建类 def…
python类中有一些方法前后都有两个下划线,这类函数统称为魔术方法.这些方法有特殊的用途,有的不需要我们自己定义,有的则通过一些简单的定义可以实现比较神奇的功能 我主要把它们分为三个部分,下文也是分为这三个部分来讲解的 简单,功能性,一般不修改直接调用查看结果 实现简单功能,定义后使用 实现比较复杂功能,常常是一些我们常见类的特性的实现原理,具体分为 实例成为可迭代对象(列表的特性) 实例索引取值(列表的特性) 上下文管理(文件的特性)等 简单功能 这部分包括上面列出的前两个点 不需要修改直接…
网络编程 网络编程需要知道的概念 网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. 1.网络(OSI)的7层模型: 应用层--->为应用程序提供网络通信服务 表示层--->数据表示 会话层--->主机间通信(两个应用进程间) 传输层--->端到端的连接,隔离网络的上下层协议,使得网络应用与下层协议无关 网络层--->寻找最优路径,转发数据包 数据链路层---&…
知识点:简单的对象定位 对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象.一个对象就是一个人一样,他会有各种的特征(属性),如比我们可以通过一个人的身份证号,姓名,或者他住在哪个街道.楼层.门牌找到这个人. 定位对象的目的一般有下面几种 操作对象 获得对象的属性,如获得测试对象的class属性,name属性等等 获得对象的text 获得对象的数量 webdriver提供了一系列的对象定位方法,常用的有以下几种 id name class name link text pa…
一.面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想.在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一个功能.举个例子,你要做饭,可以用电磁炉,也可以用煤气灶.不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路,两种最重要的编程范式分别是面向过程编程和面向对象编程. 提到面向对象,就不得不提到另一种编程思想,面向过程:什么是面向过程呢,面向过程的思想是把一个项目.一件事情按照一定的顺…
一.定义 def functionName([arg1,arg2,...]): code 二.示例 #!/usr/bin/python #coding:utf8 #coding=utf8 #encoding:utf8 #encoding=utf8 def fun(x=3,y='甜'): print '生成一个',x,'元',y,'口味的蛋糕' fun() fun(10) fun(y='奶油') 冗余参数: #!/usr/bin/python def f(name="jim",age=2…
网络编程 网络编程需要知道的概念 网络体系结构就是使用这些用不同媒介连接起来的不同设备和网络系统在不同的应用环境下实现互操作性,并满足各种业务需求的一种粘合剂.网络体系结构解决互质性问题彩是分层方法. 1.网络(OSI)的7层模型: 应用层--->为应用程序提供网络通信服务 表示层--->数据表示 会话层--->主机间通信(两个应用进程间) 传输层--->端到端的连接,隔离网络的上下层协议,使得网络应用与下层协议无关 网络层--->寻找最优路径,转发数据包 数据链路层---&…
一.面向对象的编程 面向对象程序设计--Object Oriented Programming,简称oop,是一种程序设计思想.二.面向对象的特性类:class类,对比现实世界来说就是一个种类,一个模型.一个类即是对一类拥有相同属性的对象的抽象.蓝图.原型.在类中定义了这些对象的都具备的属性(variables(data)).共同的方法. 对象:object对象,也就是指模型造出来的具体的东西.一个对象即是一个类的实例化后实例,一个类必须经过实例化后方可在程序中调用,一个类可以实例化多个对象,每…
一.概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强..." 二.创建类和对象 面向对象编程是一种编程方式,此编程方式的落地需要使用 "类" 和 "对象" 来实现,所以,面向对象编程其实就是对 "类" 和 "对象" 的使用. 类就是一个模板,模板里可以包含多个函数,函数里实现一些功能 对象…
博主今天总结这段时间抽空写的一个GUI编程项目 功能是查看本地打印机队列,可选择指定队列重新打印 直接上图 UI设计包括3个区域左上方,右上方和下方列表区域 使用网格grid方法来分配位置 下面是界面设计的代码 #!/usr/bin/env python # -*- coding: utf-8 -*- from Tkinter import * from printer_pywin32 import PrinterPywin32 import ttk class PrinterTkinter:…
一.字典: 1. 不是序列,是一种映射, 键 :值的映射关系. 2. 没有顺序和位置的概念,只是把值存到对应的键里面. 3. 通过健而不是通过偏移量来读取 4. 任意对象的无序集合 5. 可变长,异构,任意嵌套 6. 对象引用表(散列表) 二.相关操作: 1. 大括号,多个键 :值 2. 通过键来索引从而得到或操作对应的值: 3. 嵌套及索引: 4. 字典的排序: 方法一:key方法收集字典里的所有键,存到列表里,然后用sort排序,最后用for循环打印出来 方法二:python的高版本,用so…
一. 为什么要使用函数? 函数可以方便阅读代码. 函数可以减少重复代码. 函数可以减少管理操作,减少修改操作. 二. 函数分类: 内置函数:len()   sum()   max()   min() 自定义函数:用户自己设定的函数 三. 函数定义语法: def 函数名称(参数1,参数2,参数3) :   也可以不加参数 '''注释说明''' 函数体     也就是要执行的代码 return  返回值 例子: def name(): x=1 print (x) name() 结果: 四.  函数的…
字典是一种映射类型的数据类型.辣么什么是映射呢?如果看过<数据结构与算法>这一本书的小伙伴应该有印象(我也只是大学学习过,嘻嘻). 映射:就是将两个集合一 一对应起来,通过集合a的值,集合b有且只有一个与之对应.字典是Python中唯一的内置映射类型. 1 创建和使用字典 字典以类似于下面的方式表示: phonebook = {'A':'a','B':'b','C':'c'} 字典由键和其相应的值组成,这种键-值对称为项.每个键与值之间用冒号( : )分隔开,每项用逗号分隔,并且在字典以及其他…
一:模块 一个模块就是一个py文件,里面定义了一些业务函数.引用模块,可以用import语句导入.导入模块后,通过 模块.函数名(参数)  来使用模块中的函数.如果存在多个同名模块,则前面模块名需要加上包路径. 如果我们只需导入模块中的几个函数,可以用 from 模块名 import 函数名,函数名,..的形式来导入,这样就可以在代码中使用函数名来调用函数,无需路径. 为了避免同名冲突,还可以在导入函数的同时设置别名,from 模块名 import 函数名 as 别名,然后在代码中就可以使用别名…
元类(MetaClasses) 元类提供了一个改变Python类行为的有效方式. 元类的定义是“一个类的类”.任何实例是它自己的类都是元类. class demo(object): pass obj = demo() print "Class of obj is {0}".format(obj.__class__) print "Class of obj is {0}".format(demo.__class__) # Class of obj is <cla…
一 函数对象 函数同样可以作为对象复制给一个变量,如下: f = abs; print(f(-10)) f = 'abs'; print(f) def add(a,b,f): return f(a) + f(b) print(add(-1,2,f)) map 函数, map函数接受一个函数变量,第二个参数为一个可迭代对象,最后返回一个迭代器,由于迭代器的惰性,需要用list()函数返回所有元素. def squart(n): return n* n; print(map(squart,range…
一.切片 list.tuple常常截取某一段元素,截取某一段元素的操作很常用 ,所以python提供了切片功能. L=['a','b','c','d','e','f'] #取索引0,到索引3的元素,不包括索引3 print(L[0:3]) #开始索引为0可以省略 print(L[:3]) #下标1到3 print(L[1:3]) #取最后一个元素 print(L[-1]) #取倒数后两个元素 print(L[-2:]) #取前四个数,每两个取一个 print(L[:4:2]) #所有数,每两个取…
对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 文件基本操作: f = open('file.txt','r') #以只读方式打开一个文件,获取文件句柄,如果是读的话,r可以不写,默认就是只读, 在python2中还有file方法可以打开文件,python3中file方法已经没有了,只有open frist_line = f.readline()#获取文件的第一行内容,返回的是一个list print(frist_line)#打印…
列表: 一.列表操作"""Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素.比如,列出班里所有同学的名字,就可以用一个list表示: stus = ['xiaohei','xiaobai','xiaohuang','cxdser'] 索引(下标.角标)从0开始,0 1 2 3 4 5 6....最后一个元素的下标可以写-1 name = 'xiaohei,xiaobai,xiaohuang' 用字符串表示名字,但是多了不好…
文件操作 打开文件 open(name[,mode[,buffering]])   open函数使用一个文件名作为强制参数,然后返回一个文件对象.[python 3.5 把file()删除掉]   with open(somefile.txt,'r') as files: do_something(files) with 语句打开文件并把值赋值到变量,之后可以对文件操作.文件在语句结束之后会自动关闭,即使异常引起也会退出.   文件模式 r   #只读模式(默认) w(>) #写模式 a (>…
深浅copy以及赋值 对于字符串和数字而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import copy n1 = #n1 = 'hahahaha' #赋值n2 = n1#浅copy n3 = copy.copy(n1) #深copyn4 = copy.deepcopy(n1)print(id(n1),id(n2)) #打印内存地址5787536 5787536print(id(n1),id(i3))5787536 5787536print(id(n1),id(n4))57…
一.基本使用: 1. 赋值:{key:value} 1.1 与列表相同处:会改变索引(键)相关联的值的改变 1.2 与列表不同处:不用考虑值的长度,而列表是有序的需要考虑末尾偏移量,超过末尾偏移量的会报错. 2. len(字典):返回的是key的数量 二.字典的方法: 1. 取出字典里的所有值:values() 2. 取出字典里的所有key及其对应的值:iterm() 3. 判断字典里是否存在某个键:get() 4. 两个字典合并:update() 5. 删除字典里的某个key,并返回此key对…
#元祖 只读列表,可循环查询,可切片.#儿子不能改,孙子可能可以改. tu = (1,2,3,'alex',[2,3,4,'taibai'],'egon') print(tu[3]) print(tu[0:4])# # for i in tu:# # print(i)# tu[4][3]=tu[4][3].upper()# print(tu)# tu[4].append('sb')# print(tu) # s = 'alex'# s1 = 'sb'.join(s)# print(s1)#列表转…
2.5 运算符与表达式 2.5.1 算术运算符和算术表达式 算术运算符包括四则运算符.求模运算符和求幂运算符. 算术运算符 加减乘除:+ - * / 表达式:x+y   x-y   x*y  x/y 求模:% 表达式:x%y 求幂: ** 表达式:x**y 注意:与C.Java语言不用,Python不支持自增运算符和自减运算符.例如,i++.i--是错误的语法 print("1+1=",1+1) print("2*3=",2*3) print("3%2=&…
Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 在说unittest之前,先说几个概念: TestCase 也就是测试用例 TestSuite 多个测试用例集合在一起,就是TestSuite TestLoader是用来加载TestCase到TestSuite中的 TestRunner是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信…
python中的高阶函数 高阶函数就是 变量名指向函数,下面代码中的变量abs其实是一个函数,返回数字的绝对值,如abs(-10) 返回 10 def add(x,y,f): return f(x) +f(y) add(-5,9,abs) python把函数作为参数 利用add(x,y,f)函数计算: import math def add(x, y, f): return f(x) + f(y) print add(25, 9, math.sqrt) #5,3 python中map()函数 m…
1 函数式编程 面向对象 ,面向过程 ,函数式编程 侧重函数的作用,注重函数结果的传递 函数可以被赋值,也可以接受其他的值 2 函数式编程特点 1.函数是一等公民 与其他变量一样,可以赋值和被赋值,可以作为参数传递 2.只用表达式不用语句 表达式是一个单纯的运算过程,总有返回值,语句是执行某种操作,没有返回值.即每一步运算要单纯,有明确结果. 函数式编程是为运算产生的而不是IO 3. 没有副作用 尽量不使用全局内容也不修改系统变量 4.引用透明 函数运行结果因为参数而发生变化,而不是因为系统的状…