偏函数:

偏函数是functools模块提供的一个功能,偏函数可以通过设定参数的默认值,降低函数调用的难度

其中设定的参数默认值实际上是可以被传入为其他值的,最后创建偏函数时可接收函数对象、*args、

**kw三个参数

import functools
functools.partial(int,*args/**kw)

Python模块章节:模块是一组python代码的集合,可以使用其他模块,也可以被其他模块使用。

常见自己的模块时要注意:模块名要遵循Python变量命名规范,不要使用中文、特殊字符;

模块名不要和系统模块名冲突,可以在python交互环境执行import abc,若是成功则说明系统存

在这个模块。(模块实际上就是一个.py文件)

使用模块:知道导入模块,然后就可以调用模块中的函数了,模块中的函数有些是不想公开的,

不应该被直接引用,类似_xxx和__xxx这样的函数就是非公开的,所以在定义函数的时候可以将

私有函数,实际上python也没有一种确定方法来显示函数的引用,所以只能从变成习惯上来控制

所以可以在定义函数时通过在模块中利用公开函数去调用私有函数,这样外部使用的时候就不用

关心私有函数细节,形成一种封装的效果,一般的习惯是外部不需要的函数全部定义为private,

只有外部需要的函数才定义为public。

安装第三方模块:下载安装就可以了,Anaconda比较好。

面向对象编程:类和实例,举一个例子就是鸟是一个类,但是一只鸟就是一个实例,每个实例

数据互相独立,方法是和实例绑定的函数,方法可以直接访问实例的数据。定义好一个类之后,

可以创建实例,依靠类名+()实现。

访问限制:在class内部的方法和属性,可以被外部代码自由修改,为了避免,可以让内部的属性

私有化,在实例属性前加上双下划线,属性就变成仅供内部访问,外部不能访问,此时就要利用

get和set方法去访问和操作属性。python中变量名类似__xxx__的,是特殊变量。一个下划线开头

的实例变量名是可以被外部访问的,但是这种表达方式本身的意义就是虽然自身可以被访问,但

是请不要随意访问并希望被视为私有变量。不能访问的__xxx是因为python解释其把变量名修改成

_(类名)__xxx,所以依然是可以被访问的,所以python是没有机制去阻止的,一切都靠自己自觉。

继承和多态:大概意思和java中类似,然后的话有一个不同点就是,多态在python中的体现跟java

里面不一样,比如定义一个run(x)函数,x在java中是需要指定数据类型的,但是在python中是

没有一个确定的数据类型的,x可以是任意的数据类型,只要该类中定义了run中的方法,就可以调用

run()方法并使用。

获取对象信息:有三种方法,使用type(),返回参数相应的类型;使用isinstance(),用来判断一个class

是否为某一特定类型;使用dir(),可以获得一个对象的所有属性和方法,配合getattr(obj,'xxx',404)、setattr()、hasattr()

方法可以直接操作一个对象的状态。obj为对象,xxx是需要确认的东西,404为返回值,在setattr中第三

个为个人设定值。

实例属性和类属性:实例属性是属于各自的,互不干扰;类属性是类共有的,所有实例共享一个属性。

面向对象高级编程:使用__slots__:由于python语言的动态性,可以给一个实例绑定任何属性和方法,

也可以给类绑定方法,为了避免这种情况,就可以使用__slots__变量,在类中定义gg

class Student(object):
__slots__ = ('name','age') #用tuple定义允许绑定的属性名称

这样就可以指定绑定的属性,但是这样对子类是没有影响的,如果子类也定义了子类就共享父类的绑定

使用@property:在类中,为了限制一个参数的输入范围可以在setter方法中添加限制条件,这样参数

的赋值就不能那么随意了,但是直接操作会使得代码没那么美观优雅,用@property可以变得简单,

class Student(object):

    @property
def birth(self):
return self._birth @birth.setter
def birth(self, value):
self._birth = value @property
def age(self):
return 2015 - self._birth

用@property可以把一个getter()方法变成属性,另一个@score.setter装饰器把setter方法变成属性赋值,

如果只定义getter()方法不定义setter()方法,该属性就变成一个只读属性。

class Student(object):

    @property
def score(self):
return self._score @score.setter
def score(self, value):
if not isinstance(value, int):
raise ValueError('score must be an integer!')
if value < 0 or value > 100:
raise ValueError('score must between 0 ~ 100!')
self._score = value >>> s = Student()
>>> s.score = 60 # OK,实际转化为s.set_score(60)
>>> s.score # OK,实际转化为s.get_score()
60
>>> s.score = 9999
Traceback (most recent call last):
...
ValueError: score must between 0 ~ 100!

多重继承:感觉类似java接口,可以实现不同的功能,不过不同的是这个是利用一个继承的方式来实现功能

,MixIn是一种常见的设计,选择组合不同的类功能,可以快速构造出符合需求的子类。

学习python的日常4的更多相关文章

  1. 学习python的日常

    今天是开始正式接触python语言的第一天,然后来自前辈的知道开始了在学习过程当中用博客来记录自己的学习历程,以供自己更快地掌握这门编程语言. 大概的总结一下的话,还是按照我的编程的习惯,要学写代码, ...

  2. 学习python的日常7

    ---恢复内容开始--- 正则表达式: 在正则表达式中,用\d可以匹配一个数字,\w可以匹配一个字母或数字,'.'可以匹配任意字符,用*表示任意个字符,用+表示至少一个字符,用?表示0个货一个字符,用 ...

  3. 学习python的日常6

    错误.调试和测试: 错误处理: try: print('try...') r = 10 / 0 print('result:', r) except ZeroDivisionError as e: p ...

  4. 学习python的日常5

    形如__xxx__的变量或者函数名,在python中是有特殊用途的,例如__slots__是为了绑定属性的名称, __len()__方法是为了让class作用于len()函数,很多这样的函数都可以帮忙 ...

  5. 学习python的日常3

    python的一些高级特性: 切片(跟名字一样,把一个完整的东西选取一部分自己想要的去切下来):通过切片可以快速的去除一些元素,只要确定好索引位置,避免的循环导致的多写代码 数组,元组,字符串都可以用 ...

  6. 学习python的日常2

    ---恢复内容开始--- 数组list 添加用.append(i,'xxx')方法 删除用.pop(i)方法,其中i为索引位置 数组可以直接作为元素插入数组 元组tuple(初始化后不能改变,所谓不变 ...

  7. D03——C语言基础学习PYTHON

    C语言基础学习PYTHON——基础学习D03 20180804内容纲要: 1 函数的基本概念 2 函数的参数 3 函数的全局变量与局部变量 4 函数的返回值 5 递归函数 6 高阶函数 7 匿名函数 ...

  8. 人工智能时代,应立即学习python

    人工智能时代,应立即学习python 应用:web开发,自动化运维开发,自动化测试,数据分析,机器学习 1.python 快速易学习2.python 基于web开发(zhihu:tornad web框 ...

  9. 国内某Python大神自创完整版,系统性学习Python

    很多小伙伴纠结于这个一百天的时间,我觉得完全没有必要,也违背了我最初放这个大纲上来的初衷,我是觉得这个学习大纲还不错,自学按照这个来也能相对系统的学习知识,而不是零散细碎的知识最后无法整合,每个人的基 ...

随机推荐

  1. win 10 系统安装后的配置

    win10图片恢复默认照片查看器 1. 搜索栏”放大文本大小“ 调整字体大小 2. 桌面显示 我的电脑: 3. 关闭不必要的动画,ctrl+r,输入:control ,打开控制面板

  2. 003-maven开发Java脚手架archrtype-技术点说明

    一.概述 二.技术点说明 2.1.项目结构 凡auto包或文件件,均会被代码生成器再次生成二修改 1.model层 po:BasePO基础类,统一了数据库的基础字段[数据库必须添加如下,与mybati ...

  3. EasyNVR网页无插件播放摄像机RTSP流是如何调取接口在Web页实现多窗口同时直播的

    背景需求 在互联网飞速发展的时代,开发者常会说的一个词就是"跨平台".自从移动端的用户需求越来越大,H5逐渐发展,跨平台似乎已经成为了软件开发不可或缺的技术.EasyNVR互联网直 ...

  4. eclipse :代码自动补全不生效解决办法

    参考文章:https://blog.csdn.net/qq_35033270/article/details/79285821 请见下图! 恢复缺省值即可!

  5. ue4读取灰度图生成三维地形mesh

    转自:https://www.cnblogs.com/gucheng/p/10116857.html 新建ue c++工程. 在Build.cs中添加"ProceduralMeshCompo ...

  6. window系统修改时区IIS需要重启

    window系统修改时区IIS需要重启,才能获取到修改后的时区,如果不重启IIS,IIS中发布程序获取不到已经修改时区的时间.

  7. 【VS开发】MFC动态设置对话框属性 弹出或嵌入

    参考: MFC的对话框CDialog是怎么控制窗口可调整大小的属性的呢?打开资源文件,对话框资源的属性列表中,有一个"Border"项,改变该项的值就可以改变窗口边框风格.实际上w ...

  8. 【视频开发】【CUDA开发】FFMPEG硬件加速-nvidia方案

    1.目标 <1>显卡性能参数: <2>方案可行性: 2.平台信息 2.1.查看当前显卡信息 命令:  lspci |grep VGA  信息:  01:00.0 VGA com ...

  9. 【计算机视觉】目标检测中的指标衡量Recall与Precision

    [计算机视觉]目标检测中的指标衡量Recall与Precision 标签(空格分隔): [图像处理] 说明:目标检测性能指标Recall与Precision的理解. Recall与Precision ...

  10. Linq查询连接guid与varchar字段

    使用场景 在数据库设计中进场会出现一些通用表,如通用附件表,一般都是通过ForeignTable(关联的表名)和ForeignKey(关联表的主键)与其他表关联.这样的表在数据库中没有外键关系,而且一 ...