python反射

python学习——内置函数

爱⌒轻易说出口 提交于 2019-11-27 02:15:45
面向对象相关(9) 迭代器/生成器相关(3) range next iter 其他(12) 字符串类型代码的执行(3) eval 将字符串还原为字典、列表 执行字符串类型的代码,并返回最终结果 动态执行一个代码片段,侧重点在返回值上 json. # 前台往后台传输的数据 图片中eval操作将字典外的“”直接去掉 exec # 执行 全拼:execute 执行字符串类型的代码,不返回结果,一般执行相对复杂的代码 一般用在测试别人的代码的时候 complie # 编译 参数说明: 1.resource # 要执行的代码,动态代码片段 2.文件名,代码存放的文件名,当传入了第一个参数的时候,这个参数给空就可以了 3.模式,取值有3个: 1.exec:一般放一些流程语句的时候 2.eval:resource只存放一个求值表达式 3.single:resource存放的代码有交互的时候。mode应为single 将一个字符串编译为字节代码 输入输出(2) input # 输入 print # 返回None,是个功能 内存相关(2) hash # 目的是为了存储,计算之后是一个数字,hash值尽量的不要重复(在某些特定环境hash可能会重复,但是概率极低) id # 内存地址 文件操作相关(1) open 模块相关(1) __import__ 帮助(1) help 调用相关(1)

Python基础知识:函数

*爱你&永不变心* 提交于 2019-11-27 01:11:09
1、定义函数和调用函数 #定义函数def def greet_user(username): '''简单的问候语''' print('Hello,%s!'%username) greet_user('jack')#调用函数 2、形参和实参,实参的顺序很重要 def describe_flower(flower_type,flower_color='yellow'): print("My favorite flower is %s."%flower_type) print("My favorite %s is %s."%(flower_type,flower_color)) describe_flower('rose','red') describe_flower(flower_type='lily',flower_color='white') describe_flower(flower_type='babysbreath')#没有提供实参的形参将调用默认值 print('----------') 3、定义一个返回字典的函数 #返回字典 def make_album(singer_name,album_name,num_of_songs=''): info_of_album={'singer':singer_name,'album':album_name} if num_of

封装 多肽 接口类 抽象类

a 夏天 提交于 2019-11-26 22:39:44
1. 接口类 from abc import ABCMeta,abstractmethod class Payment(metaclass=ABCMeta): @abstractmethod def pay(self,money): pass class Wechatpay(Payment): def fuqian(self,money): print('微信支付了%s元'%money) p = Wechatpay() #不调就报错了 借用abc模块来实现接口 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子类继承接口类,并且实现接口中的功能 from abc import abstractmethod,ABCMeta class Payment(metaclass=ABCMeta): # 元类 默认的元类 type @abstractmethod def pay(self,money):pass # 没有实现这个方法 # 规范 :接口类或者抽象类都可以 # 接口类 支持多继承,接口类中的所有的方法都必须不能实现 —— java # 抽象类 不支持多继承,抽象类中方法可以有一些代码的实现 —— java class Wechat

python 26 反射

谁说我不能喝 提交于 2019-11-26 20:47:46
目录 1. 类的反射 1.1 实例对象 1.2 类 1.3 其他模块 -- 其他.py文件 1.4 本模块 -- 当前.py文件 2. 函数与方法的区别 2.1区别的方法: 2.2 总结 3. 特殊的双下方法 3.01 __len__ (len一下对象就触发) 3.02 __hash__ (hash一下对象就触发) 3.03 __str__ (打印对象触发、str()也会触发) 3.04 __repr__ (打印对象和repr()都会触发) 3.05 __call__ (对象名(),触发) 3.06 __eq__ (打印对象触发) 3.07 __del__ (析构方法) 3.08 __new__ (构造方法 类名()触发) 单例模式: 1. 类的反射 程序对自己内部代码的一种自省方式。 定义:通过字符串取操作对象的方式。 可应用于实例对象、类、本模块、其他模块。 带有点 . 的方式都可用反射方法。 四种方法: 1. hasattr(object, name) # 判断、检测 2. getattr(object, name) # 获取 3. setattr(object, name) # 设置 4. delattr(object, name) # 删除属性 1.1 实例对象 class A: country = '中国' def __init__(self,name,age):

Python之反射

不打扰是莪最后的温柔 提交于 2019-11-26 20:30:51
一、引言   有时候我们会碰到类似这样的需求,就是想要执行类的某个方法,或者需要对对象的某个参数赋值,而方法名或参数名已经包装在类中并不能去顶,需要通过参数传递字符串的形式输入。在这样的情况你会选择什么样的办法来解决吗?例如: # !/usr/bin/env python # -*- coding=utf-8 -*- class Action(object): def dog(self): print ( " 汪汪汪 " ) def cat(self): print ( " 喵喵喵 " ) if __name__ == " __main__ " : animal = raw_input( " Please write you want the animals: " ) act = Action() if animal == " dog " : act.dog() elif animal == " cat " : act.cat() 执行结果如下: " D:\Program Files (x86)\Python27\python.exe " F:/Python/Alex/s12/Blog/ reflect.py Please write you want the animals:cat 喵喵喵 在上面的代码中使用if语句的话,就是你每写一个方法就得有一个elif语句来判断

Python基本语法

六眼飞鱼酱① 提交于 2019-11-26 20:28:58
目录 缩进 流程控制语句 表达式 函数 对象的方法 类型 数学运算 缩进 Python开发者有意让违反了缩进规则的程序不能通过编译,以此来强制程序员养成良好的编程习惯。并且Python语言利用缩进表示语句块的开始和退出(Off-side规则),而非使用花括号或 者某种关键字。增加缩进表示语句块的开始,而减少缩进则表示语句块的退出。缩进成为了语法的一部分。例如if语句: if age < 21: print("你不能买酒。") print("不过你能买口香糖。") print("这句话处于if语句块的外面。") 注:上述例子为python 3.0版本的代码 根据PEP的规定,必须使用4个空格来表示每级缩进(不清楚4个空格的规定如何,在实际编写中可以自定义空格数,但是要满足每级缩进间空格数相等)。使用Tab字符和其它数目的空格虽然 都可以编译通过,但不符合编码规范。支持Tab字符和其它数目的空格仅仅是为兼容很旧的的Python程序和某些有问题的编辑程序。 流程控制语句 if语句,当条件成立时运行语句块。经常与else, elif(相当于else if) 配合使用。 for语句,遍历列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。 while语句,当条件为真时,循环运行语句块。 try语句。与except,finally配合使用处理在程序运行中出现的异常情况。

python中关于OOP的常用术语

家住魔仙堡 提交于 2019-11-26 17:07:06
一、python中关于OOP的常用术语 1.1抽象/实现 抽象指对现实世界问题和实体的本质表现,行为和特征建模,建立一个相关的子集,可以用于描绘程序结构,从而实现这种模型。抽象不仅包括这种模型的数据属性,还定义了这些数据的接口。 对某种抽象的实现就是对此数据及与之相关接口的现实化(realization)。现实化这个过程对于客户 程序应当是透明而且无关的。 1.2封装/接口 封装描述了对数据/信息进行隐藏的观念,它对数据属性提供接口和访问函数。通过任何客户端直接对数据的访问,无视接口,与封装性都是背道而驰的,除非程序员允许这些操作。作为实现的 一部分,客户端根本就不需要知道在封装之后,数据属性是如何组织的。在Python中,所有的类属性都是公开的,但名字可能被“混淆”了,以阻止未经授权的访问,但仅此而已,再没有其他预防措施了。这就需要在设计时,对数据提供相应的接口,以免客户程序通过不规范的操作来存取封装的数据属性。 注意:封装绝不是等于“把不想让别人看到、以后可能修改的东西用private隐藏起来” 真正的封装是,经过深入的思考,做出良好的抽象,给出“完整且最小”的接口,并使得内部细节可以对外透明 (注意:对外透明 的意思是 , 外部调用者可以顺利的得到自己想要的任何功能, 完全意识不到内部细节的存在) 1.3合成 合成扩充了对类的描述,使得多个不同的类合成为一个大的类

python与java、php、go的优势对比,各语言不要引起恐慌哈

限于喜欢 提交于 2019-11-26 16:48:34
关心这个问题的伙伴还是太多的哈, 这里重点细说一下: 首先在讲解python的优势之前, 大家需要先将这里的语言进行一个分类, 这里我们按照动态语言和静态语言来分类: 动态语言: python, javascript, php, ruby等 静态语言: java, c, c++, go等 【注】: 动态语言也经常被大家称为脚本语言, 由于经常被称为脚本语言, 所以大多数时候大家都认为一些简单的任务就用python来说, 大型的项目python就做不了或者做不好,实际上这是一个很大的误区。 为了纠正大家对这个问题的看法, 后面我们都以动态语言来描述python。 1. 动态语言的优势 大家要清楚: python是面向对象的动态语言。 为了清楚python的优势, 大家首先需要理解的是动态语言的优势, 然后要明白python在众多动态语言中的优势。 在静态语言中的一些高级概念,如java中的反射以及基于反射实现的AOP, 这些概念对java初学者以及只有一两年工作经验的人来说,这几个概念是很难理解的,更不用说如何去自己实现。如果大家使用过AOP的话就会明白这几个概念从理解到熟练使用是比较难的, 而且开发效率会比较低,尽管同学可能会说“其实使用起来还是很简单啊”, 那可能是因为你没有用过动态语言中的装饰器。

python基础3_内置函数介绍&线程进程

让人想犯罪 __ 提交于 2019-11-26 16:47:41
高阶内置函数: 学习地址: https://blog.csdn.net/weixin_42134789/article/details/82381828 高阶函数定义: 1.函数套函数,函数的参数有函数 2. return一个函数 对于返回是一个函数对象的函数,有两种处理方式: 1.直接使用list将map转换成list,如list(map(func,sep)) 2.使用for遍历去取值,for i in map(dunc,sep) amy 和 all函数: (不常用) any():参数是一个可迭代对象,使用布尔函数bool()对可迭代中的每个元素进行判断真假 1.如果可迭代对象不是空,只要有一个元素是真,返回Ture 2.如果可迭代对象是空,则返回False data = [ 'a' , 'b' , 'c' , '' ] print ( any ( data ) ) data1 = [ ] print ( any ( data1 ) ) #打印结果: True False all():参数是一个可迭代对象,使用布尔函数bool()对可迭代中的每个元素进行判断真假 1.如果可迭代对象不是空,必须所有元素都是真,返回Ture 2.如果可迭代对象是空,则返回True data = [ 'a' , 'b' , 'c' , '' ] print ( all ( data ) ) data1

第五章 模块之 getpass、sys、os

白昼怎懂夜的黑 提交于 2019-11-26 14:37:55
5.5 getpass 密码不显示(只能在终端运行) 密码不显示(只能在终端运行) import getpass​pwd = getpass.getpass('请输入密码:')if pwd == '123': print('输入正确') 5.6 sys 解释器相关模块 sys.getrefcount,获取一个值的应用计数 import sysa = [11,22,33]b = aprint(sys.getrefcount(a)) # 3 sys.getrecursionlimit,python默认支持的递归数量 import sys​print(sys.getrecursionlimit()) # 1000 sys.stdout.write ----> print (可以查看进度) import timefor i in range(1,101): mag = "%s%%\r" %i print(mag,end="") time.sleep(0.05) #从1%长到100% import os# 1.读取文件大小(字节)file_size = os.stat('day001.zip').st_size# 文件大小# 2.一点一点的读取文件read_size = 0 # 阅读大小with open('day001.zip',mode='rb') as f1 , open ('a