python函数

python中名称修饰与描述符

孤者浪人 提交于 2020-03-25 21:05:23
名称修饰 java和C#等其他高级语言中都有private关键字来修饰一个属性或字段是私有的,但是python中并没有private,而是有个与它接近的概念旧式名称修饰。每当在一个属性前面加上__前缀,解释器就会立刻将其重命名: 直接访问会抛异常 利用dir函数查看内部属性 python内部会把__前缀的属性重命名为【_类名+属性名】;因此在python中如果一个属性不是共有的就约定使用双下划线__为前缀,它不会调用任何名称修饰的算法,只是说名这个属性是该类的私有属性。 幸运的是python中还有其他机制类构建类的私有和共有代码,即使用描述符和property这些POP设计的关键特性 什么是描述符 python描述符是一个“绑定行为”的对象属性,在描述符协议中,它可以通过方法重写属性的访问。这些方法有 __ get__(), __ set__(), 和__delete__()。如果这些方法中的任何一个被定义在一个对象中,这个对象就是一个描述符 它是一个类,定义了另一个类的访问方式,即一个类可以将属性管理托管给另一个类 描述符协议 描述符类基于3个特殊方法,这3个方法组成了描述符协议 __ set__(self,obj,type=none)设置属性时调用,也称为setter __ get__(self,obj,value) 读取属性时调用,也称为getter __ delete__

python基础教程:Python中垃圾回收和del语句详解

爷,独闯天下 提交于 2020-03-25 21:02:32
Python语言默认采用的垃圾收集机制是引用计数法,本文详细的介绍了Python中垃圾回收和del语句详解,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 Python中的垃圾回收算法是采用引用计数, 当一个对象的引用计数为0时, Python的垃圾回收机制就会将对象回收 https://tieba.baidu.com/p/6575202861 a = "larry" b = a https://www.douban.com/group/topic/169020545/ 马蜂窝刷粉丝 larry这个字符串对象, 在第一行被贴了a标签后, 引用计数为1, 之后在第二行, 由贴上了b标签, 此时, 该字符串对象的引用计数为 a = "larry" b = a del a 注意: 在Python语言中, del语句操作某个对象的时候, 并不是直接将该对象在内存中删除, 而是将该对象的引用计数-1 >>> a = "larry" >>> b = a >>> del a >>> id(b) 4572141808 >>> id(a) Traceback (most recent call last): File "<input>", line 1, in <module> id(a) NameError: name 'a' is not defined

Python中的map与reduce函数简介

天大地大妈咪最大 提交于 2020-03-25 21:01:08
1.从参数方面来讲: map()函数: map()包含两个参数,第一个是参数是一个函数,第二个是序列(列表或元组)。其中,函数(即map的第一个参数位置的函数)可以接收一个或多个参数。 reduce()函数: reduce() 第一个参数是函数,第二个是 序列(列表或元组)。但是,其函数必须接收两个参数。 2.从对传进去的数值作用来讲: map()是将传入的函数依次作用到序列的每个元素,每个元素都是独自被函数“作用”一次;(请看下面的栗子) reduce()是将传人的函数作用在序列的第一个元素得到结果后,把这个结果继续与下一个元素作用(累积计算), 最终结果是所有的元素相互作用的结果。(请看下面的栗子) 举个栗子: map()函数: # 传入一个参数 def one_p(x): return x * x print 'map1.1:', map(one_p, range(1, 5)) #结果:map1.1: [1, 4, 9, 16] print 'map1.2:', map(one_p, [1, 2, 3, 4, 5, 6]) #结果:map1.2: [1, 4, 9, 16, 25, 36] # 传入多个参数 a = [1, 2, 3, 4, 5] b = [1, 1, 6, 2, 3] c = [1, 2, 3, 4, 5] s = map(lambda (x, y, z):

9.包&&命名空间

末鹿安然 提交于 2020-03-25 19:31:45
3 月,跳不动了?>>> 9.包&&命名空间 名字空间和作用域 定义 名称空间(Namespace)是名字和对象的映射 A namespace is a mapping from names to objects 名称空间是一个字典,其中键是名字,值是对象 内建、模块、函数、类都有自己的名称空间 Python的built-in names(包括内置函数,内置常量,内置类型) 模块的全局名称global names(这个模块定义的函数,类,变量) 函数的局部名称local names 名称空间通过__dict___属性和dir( )函数查看 >>> dir(M3) ['C', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'i', 'math', 'printmsin', 'prints', 'printx', 's', 'x'] >>> list(M3.__dict__.keys()) ['prints', '__builtins__', 'printx', '__file__', 'C', '__package__', 'printmsin', 'i', 's', 'x', '__name__', '__doc__', 'math'] 作用域 作用域(Scope)即一个作用范围

Python学习笔记(1)-快速浏览

雨燕双飞 提交于 2020-03-25 19:28:25
3 月,跳不动了?>>> Python是一门解释型语言 ,一般来说,由于不是以本地机器码运行,纯粹的解释型语言通常比编译型语言运行的慢。然而,类似于Java,Python 实际上是字节编译的,其结果就是可以生成一种近似机器语言的中间形式。这不仅改善了Python的性能,还同时使它保持了解释型语言的优点。 其他语言扩展 CPython:C/C++ Jython:Java IronPython:.Net/C# 几个特点 :可扩展、可移植性、易学、易读、易维护、健壮性 1.在Python 中未指定返回值的函数会自动返回None,等价于NULL 2.Python 不支持C 语言中的自增1 和自减1 运算符 , 这是因为 + 和 - 也是单目运算符, Python 会将 --n 解释为-(-n) 从而得到 n , 同样 ++n 的结果也是 n. 3.print语句 在print 语句中使用逗号来抑制自动生成的换行符号。 字符串替换功能:print "%s is number %d!" % ("Python",1) 这一点和C语言中的printf()函数非常相似 print重定向到文件: 重定向到标准错误输出: import sys print >> sys.stderr,'Fatal error:invalid input!' 重定向到日志文件: logfile=open('/temp

8,函数模块

前提是你 提交于 2020-03-25 19:25:15
3 月,跳不动了?>>> 函数模块 定义 模块(Module)是一系列函数、变量、类的组成 Python程序是由一系列模块文件组成,一个.py文件就是一个模块 功能: 提高代码重用率 需要用到某些函数,直接调用某个模块即可,无需重复编写 提高程序层次性 不同功能模块放入不同的模块,逻辑性和层次性提高 方便协作防止冲突 函数和变量在不同模块下可以有同样命名,但是不会冲突 这样多人协作时,即便命名冲突,也不会干扰 原理 模块创建 • 用代码编辑器编写代码并保存为py文件 • sublime • vim • 通过IDE编写模块 • #!/usr/bin/env python ​ # -*- coding:UTF-8 -*- ​ • x = 1 • def printx(): • 'it is a module!' • print x + 2 模块导入 • 语法 • import Module • 导入整个模块到内存 不覆盖本地命名空间 采用点号调用函数 Module.Func1 Module.Func2 Module.Func3 不会覆盖本地命名(变量/函数等) from Module import Func 导入模块某个函数到内存 直接调用此函数 Func1 会覆盖本地某个命名(若本地有) from Module import * 导入整个模块到内存 覆盖本地命名空间

把川普射上太阳—如何用python制作小游戏

故事扮演 提交于 2020-03-25 17:28:38
1.准备 开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。 Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。 输入以下命令安装我们所需要的依赖模块: pip install freegames pip install turtle 看到 Successfully installed xxx 则说明安装成功。 2.编写代码 原理很简单,就是用到了张川普的漫画图和freegames模块,以及turtle画图模块。 2.1 模块加载与设定图像 首先,引入turtle模块,和freegames模块,我们这一次实验需要用到freegames模块里的向量vector(用于表示坐标)。 import turtle from random import randrange from freegames import vector # 设定screen screen = turtle.Screen() screen.setup(420, 420, 370, 0) # 加载trump图,并设为默认turtle trump = '3.gif' screen.addshape(trump) turtle.shape

python递归函数

心不动则不痛 提交于 2020-03-25 17:26:17
递归函数的介绍 函数的递归调用:本质是函数嵌套调用的一种特殊形式,简单的讲就是在 调用一个函数的过程中又直接或间接地调用该函数本身 直接调用函数本身 示例: def f1(): print('是我是我还是我') f1() f1() 间接调用函数本身 示例: def f1(): print('from f1') f2() def f2(): print('from f2') f1() f1() 从上面两个图可以看出,两种情况下的递归调用都是一个无限循环的过程,但在python对函数的递归调用的深度做了限制,因而并不会像大家所想的那样进入无限循环,会抛出异常,要避免出现这种情况,就 必须让递归调用在满足某个特定条件下终止 。 提示: #1. 可以使用sys.getrecursionlimit()去查看递归深度,默认值为1000,虽然可以使用 sys.setrecursionlimit()去设定该值,但仍受限于主机操作系统栈大小的限制 #2. python不是一门函数式编程语言,无法对递归进行尾递归优化。 代码循环运行的两种方式(死循环) # 方式一:while、for循环 while True: print(1111) print(2222) print(3333) # 方式二:递归的本质就是循环: def f1(): print(1111) print(2222) print

Python和人工智能之间存在怎样的关系?

ε祈祈猫儿з 提交于 2020-03-25 17:24:46
  Python和人工智能有着怎样的关系?人工智能是现在非常流行的领域,而Python是非常不错的编程语言,提及两者他们之间有着怎样的联系?接下来老男孩教育为大家介绍一下吧。   其实提及到人工智能我们就会想到Python语言,尤其是对于初学者来说都认为人工智能和Python属于等号关系,其实Python是一种计算机程序语言,是一种动态、面向对象的脚本语言,起初用于编写自动化脚本,随着版本更新和功能增加,也可以从事独立、大型的项目开发。   人工智能简单的来说就是人为通过嵌入式技术将程序写入机器中实现自动化,所以说这两者之间的概念是完全不同的。   人工智能和Python的关系就是在于,学习人工智能的时候Python只是用来操作深度学习框架的工具,实际负责运算的主要模块并不是完全依靠Python进行,真正起到作用的也是许多复杂的程序所在的。   当我们深入人工智能领域的时候,会涉及很多复杂的供需,还要写C++代码,这个时候每个程序员都不想要搞复杂的东西,面对五花八门的东西也非常的麻烦。而利用Python是非常不错的选择,也是相对于好用的语言,通过简化的程序代码来搭建神经网络、填写参数、导入数据,并调用执行函数进行训练。   那么为什么要学习Python语言?用Python实验算法,也善于使用numpy做科学计算。现在使用Python的人有很多,大型公司也都在使用Python

python在数据处理中常用的模块之numpy

一笑奈何 提交于 2020-03-25 14:20:50
一 numpy模块 NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。 import numpy as np (1).np.linalg.norm(x) 顾名思义:linalg = linear + algebra,norm则表示范数,首先需要注意的是范数是对向量(或者矩阵)的度量,是一个 标量(scalar) : 首先help(np.linalg.norm查看文档 norm(x, ord=None, axis=None, keepdims=False) x表示要度量的向量,ord表示范数的种类 参数 说明 计算方法 默认 二范数 np.sqrt(x 1 **2+x 2 **2+....+x n **2) ord=2 二范数 同上 ord=1 一范数 |x 1 |+|x 2 |+...+|x n | ord=np.inf 无穷范数 max(|x i |) 用于计算向量x的2范数 x = np.array([3,4]) y = np.linalg.norm(x) print(y) 输出结果为5.0 计算矩阵x的2范数 对矩阵每一个元素求平方和然后开根号 x = np.array([3,4,5],[3,4,5]) y