Python 由 Guido Van Rossum 在90年代初创建。 它现在是最流行的语言之一 我喜爱python是因为它有极为清晰的语法,甚至可以说,它就是可以执行的伪代码。

注意: 这篇文章针对的版本是Python 2.7,但大多也可使用于其他Python 2的版本 如果是Python 3,请在网络上寻找其他教程

用一张图概况Python学习

  1. # 单行注释
  2. """ 多行字符串可以用
  3. 三个引号包裹,不过这也可以被当做
  4. 多行注释
  5. """
  6.  
  7. ####################################################
  8. ## 1. 原始数据类型和操作符
  9. ####################################################
  10.  
  11. # 数字类型
  12. 3 # => 3
  13.  
  14. # 简单的算数
  15. 1 + 1 # => 2
  16. 8 - 1 # => 7
  17. 10 * 2 # => 20
  18. 35 / 5 # => 7
  19.  
  20. # 整数的除法会自动取整
  21. 5 / 2 # => 2
  22.  
  23. # 要做精确的除法,我们需要引入浮点数
  24. 2.0 # 浮点数
  25. 11.0 / 4.0 # => 2.75 精确多了
  26.  
  27. # 括号具有最高优先级
  28. (1 + 3) * 2 # => 8
  29.  
  30. # 布尔值也是基本的数据类型
  31. True
  32. False
  33.  
  34. # 用 not 来取非
  35. not True # => False
  36. not False # => True
  37.  
  38. # 相等
  39. 1 == 1 # => True
  40. 2 == 1 # => False
  41.  
  42. # 不等
  43. 1 != 1 # => False
  44. 2 != 1 # => True
  45.  
  46. # 更多的比较操作符
  47. 1 < 10 # => True
  48. 1 > 10 # => False
  49. 2 <= 2 # => True
  50. 2 >= 2 # => True
  51.  
  52. # 比较运算可以连起来写!
  53. 1 < 2 < 3 # => True
  54. 2 < 3 < 2 # => False
  55.  
  56. # 字符串通过 " 或 ' 括起来
  57. "This is a string."
  58. 'This is also a string.'
  59.  
  60. # 字符串通过加号拼接
  61. "Hello " + "world!" # => "Hello world!"
  62.  
  63. # 字符串可以被视为字符的列表
  64. "This is a string"[0] # => 'T'
  65.  
  66. # % 可以用来格式化字符串
  67. "%s can be %s" % ("strings", "interpolated")
  68.  
  69. # 也可以用 format 方法来格式化字符串
  70. # 推荐使用这个方法
  71. "{0} can be {1}".format("strings", "formatted")
  72. # 也可以用变量名代替数字
  73. "{name} wants to eat {food}".format(name="Bob", food="lasagna")
  74.  
  75. # None 是对象
  76. None # => None
  77.  
  78. # 不要用相等 `==` 符号来和None进行比较
  79. # 要用 `is`
  80. "etc" is None # => False
  81. None is None # => True
  82.  
  83. # 'is' 可以用来比较对象的相等性
  84. # 这个操作符在比较原始数据时没多少用,但是比较对象时必不可少
  85.  
  86. # None, 0, 和空字符串都被算作 False
  87. # 其他的均为 True
  88. 0 == False # => True
  89. "" == False # => True
  90.  
  91. ####################################################
  92. ## 2. 变量和集合
  93. ####################################################
  94.  
  95. # 很方便的输出
  96. print "I'm Python. Nice to meet you!"
  97.  
  98. # 给变量赋值前不需要事先声明
  99. some_var = 5 # 一般建议使用小写字母和下划线组合来做为变量名
  100. some_var # => 5
  101.  
  102. # 访问未赋值的变量会抛出异常
  103. # 可以查看控制流程一节来了解如何异常处理
  104. some_other_var # 抛出 NameError
  105.  
  106. # if 语句可以作为表达式来使用
  107. "yahoo!" if 3 > 2 else 2 # => "yahoo!"
  108.  
  109. # 列表用来保存序列
  110. li = []
  111. # 可以直接初始化列表
  112. other_li = [4, 5, 6]
  113.  
  114. # 在列表末尾添加元素
  115. li.append(1) # li 现在是 [1]
  116. li.append(2) # li 现在是 [1, 2]
  117. li.append(4) # li 现在是 [1, 2, 4]
  118. li.append(3) # li 现在是 [1, 2, 4, 3]
  119. # 移除列表末尾元素
  120. li.pop() # => 3 li 现在是 [1, 2, 4]
  121. # 重新加进去
  122. li.append(3) # li is now [1, 2, 4, 3] again.
  123.  
  124. # 像其他语言访问数组一样访问列表
  125. li[0] # => 1
  126. # 访问最后一个元素
  127. li[-1] # => 3
  128.  
  129. # 越界会抛出异常
  130. li[4] # 抛出越界异常
  131.  
  132. # 切片语法需要用到列表的索引访问
  133. # 可以看做数学之中左闭右开区间
  134. li[1:3] # => [2, 4]
  135. # 省略开头的元素
  136. li[2:] # => [4, 3]
  137. # 省略末尾的元素
  138. li[:3] # => [1, 2, 4]
  139.  
  140. # 删除特定元素
  141. del li[2] # li 现在是 [1, 2, 3]
  142.  
  143. # 合并列表
  144. li + other_li # => [1, 2, 3, 4, 5, 6] - 并不会不改变这两个列表
  145.  
  146. # 通过拼接来合并列表
  147. li.extend(other_li) # li 是 [1, 2, 3, 4, 5, 6]
  148.  
  149. # 用 in 来返回元素是否在列表中
  150. 1 in li # => True
  151.  
  152. # 返回列表长度
  153. len(li) # => 6
  154.  
  155. # 元组类似于列表,但它是不可改变的
  156. tup = (1, 2, 3)
  157. tup[0] # => 1
  158. tup[0] = 3 # 类型错误
  159.  
  160. # 对于大多数的列表操作,也适用于元组
  161. len(tup) # => 3
  162. tup + (4, 5, 6) # => (1, 2, 3, 4, 5, 6)
  163. tup[:2] # => (1, 2)
  164. 2 in tup # => True
  165.  
  166. # 你可以将元组解包赋给多个变量
  167. a, b, c = (1, 2, 3) # a 是 1,b 是 2,c 是 3
  168. # 如果不加括号,将会被自动视为元组
  169. d, e, f = 4, 5, 6
  170. # 现在我们可以看看交换两个数字是多么容易的事
  171. e, d = d, e # d 是 5,e 是 4
  172.  
  173. # 字典用来储存映射关系
  174. empty_dict = {}
  175. # 字典初始化
  176. filled_dict = {"one": 1, "two": 2, "three": 3}
  177.  
  178. # 字典也用中括号访问元素
  179. filled_dict["one"] # => 1
  180.  
  181. # 把所有的键保存在列表中
  182. filled_dict.keys() # => ["three", "two", "one"]
  183. # 键的顺序并不是唯一的,得到的不一定是这个顺序
  184.  
  185. # 把所有的值保存在列表中
  186. filled_dict.values() # => [3, 2, 1]
  187. # 和键的顺序相同
  188.  
  189. # 判断一个键是否存在
  190. "one" in filled_dict # => True
  191. 1 in filled_dict # => False
  192.  
  193. # 查询一个不存在的键会抛出 KeyError
  194. filled_dict["four"] # KeyError
  195.  
  196. # 用 get 方法来避免 KeyError
  197. filled_dict.get("one") # => 1
  198. filled_dict.get("four") # => None
  199. # get 方法支持在不存在的时候返回一个默认值
  200. filled_dict.get("one", 4) # => 1
  201. filled_dict.get("four", 4) # => 4
  202.  
  203. # setdefault 是一个更安全的添加字典元素的方法
  204. filled_dict.setdefault("five", 5) # filled_dict["five"] 的值为 5
  205. filled_dict.setdefault("five", 6) # filled_dict["five"] 的值仍然是 5
  206.  
  207. # 集合储存无顺序的元素
  208. empty_set = set()
  209. # 初始化一个集合
  210. some_set = set([1, 2, 2, 3, 4]) # some_set 现在是 set([1, 2, 3, 4])
  211.  
  212. # Python 2.7 之后,大括号可以用来表示集合
  213. filled_set = {1, 2, 2, 3, 4} # => {1 2 3 4}
  214.  
  215. # 向集合添加元素
  216. filled_set.add(5) # filled_set 现在是 {1, 2, 3, 4, 5}
  217.  
  218. # 用 & 来计算集合的交
  219. other_set = {3, 4, 5, 6}
  220. filled_set & other_set # => {3, 4, 5}
  221.  
  222. # 用 | 来计算集合的并
  223. filled_set | other_set # => {1, 2, 3, 4, 5, 6}
  224.  
  225. # 用 - 来计算集合的差
  226. {1, 2, 3, 4} - {2, 3, 5} # => {1, 4}
  227.  
  228. # 用 in 来判断元素是否存在于集合中
  229. 2 in filled_set # => True
  230. 10 in filled_set # => False
  231.  
  232. ####################################################
  233. ## 3. 控制流程
  234. ####################################################
  235.  
  236. # 新建一个变量
  237. some_var = 5
  238.  
  239. # 这是个 if 语句,在 python 中缩进是很重要的。
  240. # 下面的代码片段将会输出 "some var is smaller than 10"
  241. if some_var > 10:
  242. print "some_var is totally bigger than 10."
  243. elif some_var < 10: # 这个 elif 语句是不必须的
  244. print "some_var is smaller than 10."
  245. else: # 这个 else 也不是必须的
  246. print "some_var is indeed 10."
  247.  
  248. """
  249. 用for循环遍历列表
  250. 输出:
  251. dog is a mammal
  252. cat is a mammal
  253. mouse is a mammal
  254. """
  255. for animal in ["dog", "cat", "mouse"]:
  256. # 你可以用 % 来格式化字符串
  257. print "%s is a mammal" % animal
  258.  
  259. """
  260. `range(number)` 返回从0到给定数字的列表
  261. 输出:
  262. 0
  263. 1
  264. 2
  265. 3
  266. """
  267. for i in range(4):
  268. print i
  269.  
  270. """
  271. while 循环
  272. 输出:
  273. 0
  274. 1
  275. 2
  276. 3
  277. """
  278. x = 0
  279. while x < 4:
  280. print x
  281. x += 1 # x = x + 1 的简写
  282.  
  283. # 用 try/except 块来处理异常
  284.  
  285. # Python 2.6 及以上适用:
  286. try:
  287. # 用 raise 来抛出异常
  288. raise IndexError("This is an index error")
  289. except IndexError as e:
  290. pass # pass 就是什么都不做,不过通常这里会做一些恢复工作
  291.  
  292. ####################################################
  293. ## 4. 函数
  294. ####################################################
  295.  
  296. # 用 def 来新建函数
  297. def add(x, y):
  298. print "x is %s and y is %s" % (x, y)
  299. return x + y # 通过 return 来返回值
  300.  
  301. # 调用带参数的函数
  302. add(5, 6) # => 输出 "x is 5 and y is 6" 返回 11
  303.  
  304. # 通过关键字赋值来调用函数
  305. add(y=6, x=5) # 顺序是无所谓的
  306.  
  307. # 我们也可以定义接受多个变量的函数,这些变量是按照顺序排列的
  308. def varargs(*args):
  309. return args
  310.  
  311. varargs(1, 2, 3) # => (1,2,3)
  312.  
  313. # 我们也可以定义接受多个变量的函数,这些变量是按照关键字排列的
  314. def keyword_args(**kwargs):
  315. return kwargs
  316.  
  317. # 实际效果:
  318. keyword_args(big="foot", loch="ness") # => {"big": "foot", "loch": "ness"}
  319.  
  320. # 你也可以同时将一个函数定义成两种形式
  321. def all_the_args(*args, **kwargs):
  322. print args
  323. print kwargs
  324. """
  325. all_the_args(1, 2, a=3, b=4) prints:
  326. (1, 2)
  327. {"a": 3, "b": 4}
  328. """
  329.  
  330. # 当调用函数的时候,我们也可以进行相反的操作,把元组和字典展开为参数
  331. args = (1, 2, 3, 4)
  332. kwargs = {"a": 3, "b": 4}
  333. all_the_args(*args) # 等价于 foo(1, 2, 3, 4)
  334. all_the_args(**kwargs) # 等价于 foo(a=3, b=4)
  335. all_the_args(*args, **kwargs) # 等价于 foo(1, 2, 3, 4, a=3, b=4)
  336.  
  337. # 函数在 python 中是一等公民
  338. def create_adder(x):
  339. def adder(y):
  340. return x + y
  341. return adder
  342.  
  343. add_10 = create_adder(10)
  344. add_10(3) # => 13
  345.  
  346. # 匿名函数
  347. (lambda x: x > 2)(3) # => True
  348.  
  349. # 内置高阶函数
  350. map(add_10, [1, 2, 3]) # => [11, 12, 13]
  351. filter(lambda x: x > 5, [3, 4, 5, 6, 7]) # => [6, 7]
  352.  
  353. # 可以用列表方法来对高阶函数进行更巧妙的引用
  354. [add_10(i) for i in [1, 2, 3]] # => [11, 12, 13]
  355. [x for x in [3, 4, 5, 6, 7] if x > 5] # => [6, 7]
  356.  
  357. ####################################################
  358. ## 5.
  359. ####################################################
  360.  
  361. # 我们新建的类是从 object 类中继承的
  362. class Human(object):
  363.  
  364. # 类属性,由所有类的对象共享
  365. species = "H. sapiens"
  366.  
  367. # 基本构造函数
  368. def __init__(self, name):
  369. # 将参数赋给对象成员属性
  370. self.name = name
  371.  
  372. # 成员方法,参数要有 self
  373. def say(self, msg):
  374. return "%s: %s" % (self.name, msg)
  375.  
  376. # 类方法由所有类的对象共享
  377. # 这类方法在调用时,会把类本身传给第一个参数
  378. @classmethod
  379. def get_species(cls):
  380. return cls.species
  381.  
  382. # 静态方法是不需要类和对象的引用就可以调用的方法
  383. @staticmethod
  384. def grunt():
  385. return "*grunt*"
  386.  
  387. # 实例化一个类
  388. i = Human(name="Ian")
  389. print i.say("hi") # 输出 "Ian: hi"
  390.  
  391. j = Human("Joel")
  392. print j.say("hello") # 输出 "Joel: hello"
  393.  
  394. # 访问类的方法
  395. i.get_species() # => "H. sapiens"
  396.  
  397. # 改变共享属性
  398. Human.species = "H. neanderthalensis"
  399. i.get_species() # => "H. neanderthalensis"
  400. j.get_species() # => "H. neanderthalensis"
  401.  
  402. # 访问静态变量
  403. Human.grunt() # => "*grunt*"
  404.  
  405. ####################################################
  406. ## 6. 模块
  407. ####################################################
  408.  
  409. # 我们可以导入其他模块
  410. import math
  411. print math.sqrt(16) # => 4
  412.  
  413. # 我们也可以从一个模块中导入特定的函数
  414. from math import ceil, floor
  415. print ceil(3.7) # => 4.0
  416. print floor(3.7) # => 3.0
  417.  
  418. # 从模块中导入所有的函数
  419. # 警告:不推荐使用
  420. from math import *
  421.  
  422. # 简写模块名
  423. import math as m
  424. math.sqrt(16) == m.sqrt(16) # => True
  425.  
  426. # Python的模块其实只是普通的python文件
  427. # 你也可以创建自己的模块,并且导入它们
  428. # 模块的名字就和文件的名字相同
  429.  
  430. # 也可以通过下面的方法查看模块中有什么属性和方法
  431. import math
  432. dir(math)
  433.  
  1. ####################################################
  2. ## 7. I/O 与 文件
  3. ####################################################
  4.  
  5. #打印到屏幕print "this is a string."a=1;b=2;print a,b
  6.  
  7. #读取键盘输入str1 = raw_input("请输入:")str2 = input("请输入:") #input可以接受python表达式,并把计算结果返回
  8.  
  9. #打开和关闭文件#open函数file object = open(file_name [, access_mode][, buffering])#close()方法fileObject.close()#write()方法fileObject.write(string)#read()方法fileObject.read([count])
  1. #读和写文件f=open(filename, mode)f.read()f.readline()f.readlines()f.write()f.tell()f.seek()f.close()
  2.  
  3. #with语句#读取文件最好使用with语句,这样你在处理完后,文件会自动关闭。with open('note.txt','r') as f:  f.read()
  4.  
  5. #写入文件#写入文件,写入模式 mode 优先使用 a+ 模式,这样使文件指针指向末尾,直接向文件追加数据。除非你想清空数据,这个时候用w模式。values = [123,456,789]with open('work.txt','a+') as f:  for value in values:    f.write(str(value))  #注意写入前需要把整数用函数str()转换成字符串,然后写入。    f.write('\n')
  6.  
  7. #按行处理文件with open('note.txt','r') as f:  for line in f:    print(line)
  8.  
  9. #使用readline()方法只读取一行with open('note.txt','r') as f:  print('{!r}'.format(f.readline()))
  10.  
  11. #使用readlines()读取所有的内容with open('note.txt','r') as f:  print(f.readlines())
  12.  
  13. ######################################################pickle 持久化存储模块#基本接口:pickle.dump(obj, file, [,protocol])
  14.  
  15. #获得文件句柄output = open('data.pkl','wb')#存储数据pickle.dump(data,output)#关闭文件句柄output.close()  

更多阅读

希望学到更多?试试下面的链接:

参考资料:https://learnxinyminutes.com/docs/zh-cn/python-cn/

Python2 简明教程的更多相关文章

  1. ArcGIS Pro 简明教程(4)工具和模型构建器

    ArcGIS Pro 简明教程(4)工具和模型构建器 by 李远祥 工具箱中的工具 ArcGIS Pro 在1.3版本基本上已经继承了ArcMap的所有工具,而且会不断加入一些它自身才有的工具,例如适 ...

  2. Python 简明教程 --- 1,搭建Python 环境

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 人生苦短,我用Python. -- 龟叔T恤 Python 是一门解释型语言,所以要想运行Pytho ...

  3. Python 简明教程 --- 14,Python 数据结构进阶

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果你发现特殊情况太多,那很可能是用错算法了. -- Carig Zerouni 目录 前几节我们介 ...

  4. Python 简明教程 --- 16,Python 高阶函数

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 对于那些快速算法,我们总是可以拿一些速度差不多但是更容易理解的算法来替代它们. -- Douglas ...

  5. Python 简明教程 --- 9,Python 编码

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 当你选择了一种语言,意味着你还选择了一组技术.一个社区. -- Joshua Bloch 目录 1, ...

  6. Python 简明教程 --- 4,Python 变量与基本数据类型

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 任何一个人都会写出能够让机器理解的代码,只有好的程序员才能写出人类可以理解的代码. -- Marti ...

  7. Python 简明教程 --- 22,Python 闭包与装饰器

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 当你选择了一种语言,意味着你还选择了一组技术.一个社区. 目录 本节我们来介绍闭包与装饰器. 闭包与 ...

  8. 2013 duilib入门简明教程 -- 第一个程序 Hello World(3)

    小伙伴们有点迫不及待了么,来看一看Hello World吧: 新建一个空的win32项目,新建一个main.cpp文件,将以下代码复制进去: #include <windows.h> #i ...

  9. 2013 duilib入门简明教程 -- 部分bug (11)

     一.WindowImplBase的bug     在第8个教程[2013 duilib入门简明教程 -- 完整的自绘标题栏(8)]中,可以发现窗口最大化之后有两个问题,     1.最大化按钮的样式 ...

随机推荐

  1. iOS学习笔记06—Category和Extension

    iOS学习笔记06—Category和Extension 一.概述 类别是一种为现有的类添加新方法的方式. 利用Objective-C的动态运行时分配机制,Category提供了一种比继承(inher ...

  2. Maven使用tomcat8-maven-plugin插件

    在网上搜索一堆文章没找到解决方法,只找到了tomcat7-maven-plugin的plugin,如下: <plugin> <groupId>org.apache.tomcat ...

  3. yii---生产链接的方法

    yii生成链接的方法: Yii::$app->urlManager->createUrl('xxx/xxx') <?= Yii::$app->urlManager->cr ...

  4. CentOS7.5搭建Solr7.4.0集群服务

    一.Solr集群概念 solr单机版搭建参考: https://www.cnblogs.com/frankdeng/p/9615253.html 1.概念 SolrCloud(solr 云)是Solr ...

  5. Windows 平台下安装Cygwin后,sshd服务无法启动

    Windows 平台下安装Cygwin后,sshd服务无法启动 系统日志记录信息: 事件 ID ( 0 )的描述(在资源( sshd )中)无法找到.本地计算机可能没有必要的注册信息或消息 DLL 文 ...

  6. NEFU 118 - n!后面有多少个0 & NEFU 119 - 组合素数 - [n!的素因子分解]

    首先给出一个性质: n!的素因子分解中的素数p的幂为:[ n / p ] + [ n / p² ] + [ n / p³ ] + …… 举例证明: 例如我们有10!,我们要求它的素因子分解中2的幂: ...

  7. flume学习笔记

    #################################################################################################### ...

  8. 指定多个pip源

    https://blog.csdn.net/liujiong63/article/details/78795015 Linux环境下创建pip配置文件: vim .pip/pip.conf [glob ...

  9. Jmeter(十一)_针对响应信息不明确的接口做关联

    下午写一个新功能的接口脚本,遇到几个技术问题,现在将解决方案写出来 1:做接口关联的时候,发现接口响应没有可以利用的信息.如下图只返回了一个成功的标识,这样的接口如何与之关联? 通过抓包观察后续的修改 ...

  10. mysql 内置功能 触发器 实验

    #准备表命令表 CREATE TABLE cmd ( id INT PRIMARY KEY auto_increment, ), priv ), cmd ), sub_time datetime, # ...