Python基础总结

来源:互联网 发布:moe破解软件下载 编辑:程序博客网 时间:2024/06/05 21:53

言语是为了传递信息,语言则是一种传递方式。机器是人思维的延伸,
机器语言就是对人思维的模仿。让机器像我们一样的生活,工作学习,也就是人工智能。

Java JavaScript Swift kotlin 还有纯函数式的Haskell,世界上最好的语言Php 。。经典的C 、C++

在复杂业务逻辑里(ifelse)举个例子,要提供一个图像处理的服务,首先:我们有大量原始数据,用haskell提供数据分析,算法(思维方式的抽象)计算最优解,然后利用c和c++提供操作系统的可执行.exe文件
,给我们呈现结果,这就搭建了实验环境的第一步;其次,我们需要将我们的结果做成一种服务,java+kotlin+swift(java后台,安卓ios),
这样会发现代码过于臃肿,导致逻辑给人的感觉不够清晰,这是语言特性造成的,数据处理取舍不够灵活。于是我们可以把原有的java后台作为我们的代理服务器(业务服务器),可以拿python搞一个逻辑服务器,只提供结果给java后台。这就是我们的python就像胶水一样,哈哈哈,很形象。最后我们从客户端拍一张照片,然后比对出最优答案的服务也就可以构建了。

哈哈哈,这里我们不谈人生,人生苦短,只学python

语言必须要学的,数据类型,变量,函数。

这里,就细细描述一下python需要学的东西
前提:以windows为环境python2.7 安装配置环境变量
这里写图片描述
Notepad++新建文件,后缀名.py

一 基础:
数据类型和变量

  1. Booleans[布尔型] 或为 True[真] 或为 False[假]。

    1. Numbers[数值型] 可以是 Integers[整数](1 和 2)、
      Floats[浮点数](1.1 和 1.2)、Fractions[分数](1/2 和
      2/3);甚至是 Complex Number[复数]。
    2. Strings[字符串型] 是 Unicode 字符序列,例如: 一份
      HTML 文档。
    3. Bytes[字节] 和 Byte Arrays[字节数组], 例如: 一份
      JPEG 图像文件。
    4. Lists[列表] 是值的有序序列。
    5. Tuples[元组] 是有序而不可变的值序列。
    6. Sets[集合] 是装满无序值的包裹。
    7. Dictionaries[字典] 是键值对的无序包裹。
      当然,还有更多的类型。在 Python 中一切均为对象,因此存在
      像 module[模块]、 function[函数]、 class[类]、 method
      [方法]、 file[文件] 甚至 compiled code[已编译代码] 这
      样的类型。
      我对数据类型的理解是对数据区分的规范,对数据分类是可以提高效率的,举个例子,高速路上不同道上跑不同类型的车,试想,如果不同车子,大车小车都在一条道上跑,道路标准怎么定,会严重影响效率,车道就是数据结构(数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。哈哈哈)

    type() 函数来检测任何值或变量的类型
    isinstance() 函数判断某个值或变量是否为给定某个类型。
    在Python中,能够直接处理的数据类型有以下几种:

    1整数:Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。十六进制用0x
    2 浮点数:浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5
    3字符串 :字符串是以”或”“括起来的任意文本
    4布尔值:在Python中,可以直接用True、False表示布尔值(请注意大小写),也可以通过布尔运算计算出来。布尔值可以用and、or和not运算。
    5空值:空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

print(45678 + 0x12fd2)print("Learn Python")print(100 < 99)print(0xff == 255)

这里写图片描述

数值运算
这里写图片描述
注意 布尔上下文环境中的数值
零值是 false[假],非零值是 true[真]。
1. 在布尔类型上下文环境中,空列表为假值。
2. 任何至少包含一个上元素的列表为真值。
3. 任何至少包含一个上元素的列表为真值。元素的值无关紧
要。
字符串和编码
我们要表示字符串 I’m OK ,这时,可以用” “括起来表示:”I’m OK”
类似的,如果字符串包含”,我们就可以用’ ‘括起来表示:’Python was started in 1989 by “Guido”.’如果字符串既包含’又包含”就需要对字符串的某些特殊字符进行“转义”,Python字符串用\进行转义。
因为Python的诞生比Unicode标准发布的时间还要早,所以最早的Python只支持ASCII编码,普通的字符串’ABC’在Python内部都是ASCII编码的。
如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释

# -*- coding: utf-8 -*-

“集合”(类比java)
列表是 Python 的主力数据类型。当提到 “列表 ”时,您脑海中可
能会闪现“必须进一步声明大小的数组,只能包含同一类对象
“ 等想法。千万别这么想。列表比那要强大得多。Python 中的列表更像 Java 中的数组(尽管可以把列表当做生命中所需要的一切来使用)。一个更好的比喻可能是 ArrayList 类,该类可以容纳任何对象,并可在添加新元素时进行动态拓展。
① List和Tuple ; ②dict和set
构造list非常简单,按照上面的代码,直接用 [ ] 把list的所有元素都括起来,就是一个list对象。通常,我们会把list赋值给一个变量,这样,就可以通过变量来引用list:
索引从 0 开始,以此类推,小心越界异常。

L = ["Adam", 95.5, "Lisa", 85, "Bart", 59]print L[2]

倒序访问list,我们可以用 -1 这个索引来表示最后一个元素:L[-1]
还有切片技术,很骚

L = ["Adam", 95.5, "Lisa", 85, "Bart", 59]if __name__ == '__main__':    print(L[2])    print(L[1: 4])    print(L[:3])    print(L[3:])# 结果# Lisa# [95.5, 'Lisa', 85]# ['Adam', 95.5, 'Lisa']# [85, 'Bart', 59]

列表操作函数append extend insert
1:append() 方法向列表的尾部添加一个新的元素。:
2:extend() 方法只接受一个列表作为参数,并将该参数的每个元素都添加到原有的列
3:insert() 方法将单个元素插入到列表中。第一个参数是列表
中将被顶离原位的第一个元素的位置索引。☞a_list.insert(0, value) 就像是 Perl 中的:unshift() 函数。它将一个元素添加到列表的头部,所有其它的元素都被顶理原先的位置以腾出空间。
4:count() 方法返回了列表中某个特定值出现的次数
5:如果你想知道的是某个值是否出现在列表中, in 运算符将会比使用 count() 方法要略快一些。in 运算符总是返回 True 或False;它不会告诉你该值出现在什么位置。
6:index() 方法将查找某值在列表中的第一次出现。
7:remove() 方法从列表中删除某个元素。如果试图删除列表中不
存在的元素,它将引发一个例外。REMOVING ITEMS FROM A LIST:BONUSROUND
8:如果不带参数调用, pop() 列表方法将删除列表中最后的元素,并返回所删除的值。 可以从列表中 pop[弹出]任何元素。只需传给 pop() 方法一个位置索引值。它将删除该元素,将其后所有元素移位以“填补缝隙”,然后返回它删除的值。
元组tuple
元素 是不可变的列表。一旦创建之后,用任何方法都不可以修
改元素。
a_tuple = (“a”, “b”, “mpilgrim”, “z”, “example”)
好处:元组的速度比列表更快。如果定义了一系列常量值,而所需
做的仅是对它进行遍历,那么请使用元组替代列表。
• 对不需要改变的数据进行“写保护”将使得代码更加安全。使
用元组替代列表就像是有一条隐含的 assert 语句显示该数据是
常量,特别的想法(及特别的功能)必须重写。(??)
• 一些元组可用作字典键(特别是包含字符串、数值和其它元
组这样的不可变数据的元组)。列表永远不能当做字典键使
用,因为列表不是不可变的。
•元组可转换成列表,反之亦然。内建的 tuple() 函数接受一个列表参数,并返回一个包含同样元素的元组,而 list() 函数接受一个元组参数并返一个列表。从效果上看, tuple() 冻结列表,而 list() 融化元组。
在 Python 中,可使用元组来一次赋多值。

集合 set 是装有独特值的无序“袋子”。一个简单的集合可以包含
任何数据类型的值。如果有两个集合,则可以执行像联合、交
集以及集合求差等标准集合运算。
要创建只包含一个值的集合,仅需将该值放置于花括号之间。({})。

注意:>>> not_sure = {}   >>> type(not_sure)<class 'dict'>1. 要创建空集合,可不带参数调用 set() 。  2. 打印出来的空集合表现形式看起来有点儿怪。也许,您期望看到一个 {} 吧 ?该符号表示一个空的字典,而不是一个空的集合。本章稍后您将学到关于字典的内容。  3. 尽管打印出的形式奇怪,这 确实是 一个集合……  4. …… 同时该集合没有任何成员。  5. 由于从 Python 2 沿袭而来历史的古怪规定,不能使用两个花括号来创建空集合。该操作实际创建一个空字典,而不是一个空集合。

1:add() 方法接受单个可以是任何数据类型的参数,并将该值
添加到集合之中。
2:update() 方法仅接受一个集合作为参数,并将其所有成员添
加到初始列表中。其行为方式就像是对参数集合中的每个成员
调用 add() 方法。
3:由于集合不能包含重复的值,因此重复的值将会被忽略。实际上,可以带任何数量的参数调用 update() 方法。如果调用时传递了两个集合, update() 将会被每个集合中的每个成员添加到初始的集合当中(丢弃重复值)。
4:update() 方法还可接受一些其它数据类型的对象作为参数,包括列表。如果调用时传入列表,update() 将会把列表中所有的元素添加到初始集合中。
5:discard() 接受一个单值作为参数,并从集合中删除该值。
6:如果针对一个集合中不存在的值调用 discard() 方法,它不进行任何操作。不产生错误;只是一条空指令。
7:remove() 方法也接受一个单值作为参数,也从集合中将其删除。区别在这里:如果该值不在集合中,remove() 方法引发一个KeyError 异常
8:pop() 方法从集合中删除某个值,并返回该值。然而,由于
集合是无序的,并没有“最后一个”值的概念,因此无法控制删除的是哪一个值。它基本上是随机的。clear() 方法删除集合中 所有 的值,留下一个空集合。它等价于 a_set = set(),该语句创建一个新的空集合,并用之覆盖a_set 变量的之前的值。试图从空集合中弹出某值将会引发 KeyError 例外。
集合常见操作:
对两个集合的 Union[并集]操作也是对称的。
对两个集合的 Intersection[交集]操作也是对称的。
对两个集合的 Difference[求差]操作不是对称的。这是有意义的;它类似于从一个数中减去另一个数。操作数的顺序会导致结果不同。
条件判断和循环
二 函数:
调用函数
定义函数
函数的参数
递归函数
三 高级特性:
切片
迭代
列表生成式
生成器
四 函数式编程:
高阶函数
返回函数
匿名函数
装饰器
偏函数
五 Module:
使用模块
安装第三方模块
使用future
六 面向对象编程:
类和实例
访问限制
继承和多态
获取对象信息
七 面向对象高级编程
使用slots
使用@property
多重继承
定制类
使用元类
八 IO流
文件读写
操作文件和目录
序列化
九 进程和线程
多进程
多线程
ThreadLocal
进程 vs. 线程
分布式进程

基础也就这些了,之后就是用一些框架(套路),开发项目了

之后会持续更新,谢谢大家关注:)

原创粉丝点击