ahxcjxzxh 发表于 2017-4-25 12:37:01

简明Python教程笔记整理

  闲得没事干 又没心思深入研究其他东西 找了个折中的办法 看点新玩意儿 事实证明还是成功的 这次是Python 看的是http://sebug.net/paper/python/index.html 《简明Python教程》 只当扩充眼界 说实话 你让我Python搞个实际可用的东西 我依旧无能为力 悲催吧
  简单把笔记整理一下 跟我认知中相同的部分都略过了
  * Python中 字符串 '...' "..."是一样的 '''...'''  """..."""这样的三引号代表多行字符串
  * 自然字符串用 r"...\n" 这样\n不会被转义
  * Unicode字符串 u"..."
  * 在行末加入\ 表示下行继续 
  * 通过raw_input()获取输入
  * 注释语句用#
  * Python中的if语句 if-elif-else
  * Python中的while语句 while...else(可选)..
  * Python中的for语句 for...in.. 注意Python没有for(;;) for in类似于foreach/for(i:I)这样的形式
  扩展for i in range(1,5) ----
  * 以上程序块不是通过{} 而是通过缩进 在判断语句后跟的是:即

if(...):
...
while(...):
...
else:
...这样的形式
   * break终止循环 不会执行可选else中的内容
  * 函数定义 def function():
  * 代参数的 def function(a,b=5); #这个还带默认参数 默认参数必须在参数表最后 (a=5,b)这样是错误的
  * 全局变量 global x (否则内部变量都会被作为私有变量处理)
  一个函数定义例子:

def f(a,b=5,c=10)
f(3,7) ---> a=3,b=5,c=10
f(25,c=24) ---> a=25,b=5,c=24
f(c=20,a=100) ---> a=100,b=5,c=20
  * retun None(None就是常见的null)
  * 关于DocString 文档字符串
  def a():
  '''A........     
  ........
  .......。'''
  ....
  文档字符串是一个多行字符串(三引号)
  大写开始,句号结尾
  第二行为空行
  第三行开始是描述介绍
  当调用print a.__doc__时 会被打印出来
  * 使用sys模块
  import sys 或者 from sys import *(感觉类似java中引用package包)
  * 自己定义模块 mymodule.py (其实就是使用其他py)

def sayhi():
...
version='0.1'
   使用

import mymodule
mymodule.sayhi()
print mymodule.version
   * 数据结构部分
  * 列表list 
  用[]包含 有append del len(list) sort等方法
  * 元组 
  用()包含 (a,b,c) 空元组a为 a() 特别注意 元组 b 要写成 b(1,) 最后个逗号必须
  * 列表和元组的区别 列表是可变的 元组是固定的
  * 元组的打印方法
  print "&s is &d years old" % (name,age)

   (好吧 这个不是类似于C了么)
  * 数据字典 
  ab={a:1,
  b:2,
  c:3}
  取值方法 ab["a"]
  * 数据词典打印
  


for name,address in ab.items():
print "&s at &s" % (name,address)
   * 另一种打印
  


if "aaa" in ab: #检查是否存在
print ab["aaa"]
   * 序列 序列下标从0开始 0,1,2,3......
  下标支持负数 0,1,2........-3,-2,-1(最后一个为-1)
  * 序列切片操作 str 1-3(这是下标 截取了1,2两个元素 末尾元素不在其中)
  其他一些切片str[:-1] str str[:]
  * 切片操作是copy了一个新的对象(不是赋值 赋值是产生一个参考,仍然指向同一个元素) (好吧 又来搞这个问题了)
  * Python中一切都是对象 一个整数也是一个对象
  * self参数 表示自己 定义函数时其实都有一个self 比如count(self) 当定义参数列表 最好第一个为self 之后为自己的 而无参也最好写个self
  self类比下类似于this
  * 初始化方法
  def __init__(self) 当类对象建立时会被执行
  同样可以类比构造函数
  * 同理还有__del__(self..) (析构)等方法
  * _aaa 表示这是一个私有变量(默认规则 当做命名规则吧 不是系统认定)
  * __aaa 声明一个私有变量 这个是系统认定的 不做声明时都是共有public的
  * 继承
  class Super
  class Chile(Super) 注意(...)其实是一个元组 也就是 可以多重继承 class a(b,c,d)
  * 输入输出 raw_input / print
  * 文件 
  f = file("urlPath",'w') #'w'是模式 常用的有'r'读(默认),'w'写,'a'追加
  f.write(...)
  f.close()
  f.readline() 都是常用方法
  * 存储器pickle 有一个cPickle 是用c写的 速度上更快
  这是一个持久化对象 使用方法:
  


import cPickle as p
shoplist=['apple','mango','banana']
f=file(shoplist,'w')
p.dump(shoplist,f) #存操作
store=p.load(f) #取操作
   * Python中的异常处理
  


try:
...
except EOFError:
...
except:
...
finally:
...
else:
...
   其实是一样的
  * 抛出异常 raise xxxExeption() (等同于java的throw)
  后面的部分就是系统模块的东西 基本就是个list
  * 命令行参数 sys.argv 该列表中至少包含一个项目,即当前运行程序的名称,作为sys.argv
  * os模块
  os.sep 路径分割符(根据系统各不相同 如linux是'/' windows是'\\')
  os.name 平台名称 windows--nt linux--posix
  os.getcwd 当前目录(Python脚本工作目录)
  os.getEnv os.putEnv 环境变量
  os.listdir 返回所有目录和文件
  os.remove 删文件
  os.sytem 运行shell
  os.linesep 终止符 windows--'\r\n' linux--'\n'  mac--'\r'
  os.isfile os.isdir 是否为文件/目录
  os.path.split 返回目录名和文件名 例如 c:\\abc\bc\abc.txt 返回c:\\abc\bc 和 abc.txt
  * Python中的更多内容
  * 特殊方法
  比如 __init__ , __del__
  还有 __getitem__() 使用x索引操作
  __str__() 即toString
  __lt__(self,other) 小于操作 compare?
  __len__(self) 序列对象内置的len方法
  * 列表综合
  得到一个新的列表 包含原列表中所有大于2的元素 将其乘2后存储
  


listone=
listtwo=
   最终得到listtwo是
  * 函数中接收元组,列表(作参数)
  def(a,*b)
  其中*b就是一个元组 所有多余的参数都被认为是元组b中的元素
  def(a,**b)
  **b表示字典 所有多余参数被认为是key/value 放在b中
  * lambda形式
  用于创建新的函数对象,并在运行时返回他们
  


def make_repeater(n):
return lambda s:s*n #跟一个表达式 并且只能跟表达式
twice = make_repeater(2)
print twice('word')
print twice(5)
   打印结果是 wordword和10
  
  lambda表达式不懂 求科普
  * exec和eval
  吐槽:js中听过这两个强大的东西
  exec 执行存储在字符串或文件中的Python语言
  exec 'print "aaa"' 输出 aaa
  eval 计算存储在字符串中的有效表达式
  eval ('2*3') 输出 6
  * assert 用于声明某个条件是真的
  当assert失败,引发一个AssertionError
  assert也不是非常了解 求科普
  * repr 取得对象的规范字符串表示 比如取得打印时的样子
  反引号也有同样的作用`i`
  一般的 有eval(repr(object))==object
  同样这里的结果可以通过__repr__设置
  附件是笔记 用notepad++写的 为了有语法高亮着色 保存成py文件了 txt一样看
页: [1]
查看完整版本: 简明Python教程笔记整理