设为首页 收藏本站
查看: 1974|回复: 0

[经验分享] Python学习笔记1

[复制链接]
发表于 2018-8-15 13:16:16 | 显示全部楼层 |阅读模式
基础性质
概念
  1)历史
  发展久,与java同期
  2)版本
  3.X   2.7lib多  常用
  3)脚本语言,不需要编译
  4)解释性语言,读一行解释一行
  5) 运行性能较差,没有ruby差 哈哈哈哈
  6) lib(库文件)多,声音视频,数据挖掘,支持的东西多
  7)可读性高
特点
  1)GIL:全局解释锁  Global Interpreter Lock
  不能利用多块cpu,所以使用多进程机制(并行)解决GIL,消耗资源。
  java,go 可以支持多cpu
  2)面向对象
  3) 在java static 块写程序,就和写脚本一样
编程环境:
  1)vim
  在vim 中设置缩进为4个空格
  touch /.vim/vimrc
  68set encoding=utf-8
  69set number
  70set hlsearch      高亮显示
  71set tabstop=4   一个tab四个空格
  72set shiftwidth=4
  73set expandtab
  2)python
  退出         exit() | Crtl+d
  帮助         help(str)   查看字符串帮助文档
  3)pycharm
基础知识
基本运算
DSC0000.png

变量类型:变量的类型不指定,直接定义
基本类型和强制类型转换
DSC0001.png

  如果不强制类型转换,两种不同的类型运算就会报错,这就是强类型的编程语言的特点
DSC0002.png

布尔类型和逻辑运算
  True
  False               0 None '' [] {}
  1)      []
  
  a=[]   // a=[1,2,3]
  if a:
  print 'a:',a
  else:
  print 'empty'
  2)      None
  
  a=None
  if a == None
  print 'None'
  if a is None:
  print 'None'    常用
  3)and or not in
DSC0003.png

  if 'a' in[1,2,4]
  print ...
  注意:    尽量不用浮点数
list 列表
  没有长度限制,可以有元素也可无,支持不同类型的存储
  c={1,2,3,4}
  c.append(5)
  c.append(XX)
  print c
tuple 元组
  (1,2)
  tuple 元组:长度不可变
  str ,string,长度不可变
  dict字典   键值对,key-value
  d={
  "a":"abc",
  'b':123,
  'c':[1,2,3],
  'd':{'a':111}
  }
  print d['a']    abc
  print d['b']    123
DSC0004.png

两种引用
DSC0005.png

  """ 可以换行,通常用作方法的注释
DSC0006.png

文件操作
  读取文件
  with open('lalala.txt','r')as f:
  test=f.read()
  print test
  写文件(覆盖写入)
  out=miaomiao
  with open('lalala.txt','w')as f:
  f.write(out)
DSC0007.png

  语句
  
  1)pass    空操作。
  if xxx='a'
  pass
  else:
  do...      程序主体
  2)break      跳出当前循环。
  3)continue 本次循环continue 以下的语句不执行。
  4while True永真循环用break跳出
  do...
  if xxx=='aaa'
  break
  5)for  
  1)一重循环和缩进
  for item in [1,2,3,4,5]:
  printitem         在循环语句中
  print a                         不在循环语句中
  python 靠缩进区分语句是否在循环中
  2)两重循环
  for item in [1,2,3,4,5]:
  printitem
  foriteml in ['a','b','c']:
  printiteml
DSC0008.png

DSC0009.png

  小练习:输出菱形。
  注意:循环逆序输出用 for x in range(4)[::-1]:
DSC00010.png

输入
  input      输入数字
  raw_input  输入字符串
  a=input("input a number ")
  print type(a),a     显示输入的类型
DSC00011.png

  一般情况下,用input不能输入字符串
DSC00012.png

  通常用raw_input输入字符串
DSC00013.png

  注意:但是以     字符串’  方式,input也能输入字符串~~
DSC00014.png

  小练习:猜数字,三次机会,猜对就退出,大:提示大,小:提示小。
DSC00015.png

DSC00016.png

  方法
  定义类(驼峰命名法)
  CreateStudentInfo
  
  定义方法(小写和下划线)
  def print_param(p1,p2,p200):
  print param
  return 'a' //要是没有return 默认return None
  print_param('ss')   调用方法(只看方法名,没有方法的重载)
  常用方法

  •   len()         求string list dict长度的方法
  print len(c)

  •   del()          删除的方法,可以删除字典,列表list????
  dd={'a':123,'b':456}
  del dd['a']
DSC00017.png


  •   type ()
  •   a)        []       :        list    列表
DSC00018.png

  b)        ()       :        tuple         元组
DSC00019.png

  c)        ‘’       :        str    字符串
DSC00020.png

  d)        {}       :        dict  字典(键值对)
DSC00021.png

  e)        None         :        NoneType
DSC00022.png

  f)         True          :        bool
DSC00023.png

小练习
  判断输入的年份,是否为闰年。(能被4整除但不能被100整除)
DSC00024.png

常识
  yield  生成器
  globle 全局变量
DSC00025.png

  解释器
  cpython    :traditional
  pypy:use py explain py
  jython       :java
  大多支持2.7
  异常处理
  raise Execption('xxxx error')
  try/except/finally
  导入包
  import
  from xxxx import
  断言
  assert a=='bsss','error info ...'
  赋值
  a=1
  a=[]
  a={}
  交换变量
  a=1
  b=2
  a,b=b,a
DSC00026.png

set 集合(去重)
  应用:list去重
  a=set('aba')    //只有字符串才用这种
  print a
  a=set (['a','a','b'])
  print a
  print 'b' in a 某个元素是否在集合内部
  True   在
  False  不在
  b=set('abc')
  print a-b  减没了
  print b-a
  print a&b   交集
  print a|b  并集
  print b>a   比较集合的数量 True
DSC00027.png

  给集合添加元素:   添加位置为第一个元素后面,即成为第二个元素
  a.add('d')
  print a
  把集合转换list
  print list(a)
DSC00028.png

小练习
  求出两个集合中的相同元素和不同元素。
DSC00029.png

模块和包
  模块:     一个py文件就是一个模块(module)
  包:         是一个包含一个_init_.py文件的文件夹
导入(引用)
  import和from import 区别
  import (变量等…)from 包.模块
  import   模块中的(变量等…)
  自己写
  不同包中变量名会相同外部的包,变量等会冲突
  用什么导什么
  import 一般不能计算,计算写在方法里
循环导包会产生错误
  a import b, b 不能import a,不能产生自循环
  敲黑板:所以应该局部导入,减少类似错误!!!!!
DSC00030.png

DSC00031.png

工具
  pip install tornado
  pip list   列出当前列表
  pip install -r requirements.txt  依赖
  requirements:
  Django == 1.5.4             ==版本   什么都不写,最新的
  MYSQL-python==1.2.4
  pip uninstall <package_name>
  pip uninstall -r requirements.txt   卸载所有
  pip install -U <package_name>   升级
  pip show -f <package_name> 显示包所在的目录
  pip search <key>
  pip list -o 查询所有可以升级的包
  下载一个pip的包
  pip install <package> -d <path>
mkdir myproject
DSC00032.png

  resources  存放证书等...
  src :python, shell, SQL等…
  test
  src/python/launcher.py  入口文件
  src/python/test_str
  src/python/test_str/__init__.pyc  运行python后生成的编译文件
  src/python/test_str/__init__.py     通常一个可导入的包中,有这个文件
  vim __init__.py
  if __name__=='__main__'     可以自己用,不能被别人导入??????
  print 'test str'
  编写入口文件。
  vim launcher.py
  #encoding=utf8
  import test_str
  import time
  while True:
  print'working...'
  time.sleep(1)
DSC00033.png

DSC00034.png

  注意:
  1.在launcher.py 可以importtest_str(别的包或模块)
  2.launcher 不能被别人import
  3.#encoding=utf8    文本中如果想要有汉字就加这句。
字符串
基础
DSC00035.png

DSC00036.png

  字符串的拼接         "aaa" +"bbb"
  字符串的乘法         a=a*3      "aaabbbaaabbbaaabbb"
  a1=a[1]
  print type(a1),a1      一个字母拿出来是字符串,不是字符,python中没有字符概念
字符串中常用方法
  # encoding=utf8
  a='today is a  %s day %s'%('good','la')
  print a
  print a.find('d')              找到a中第一次出现d的位置(从0开始哦)
  print a.endswith('la')         a是否以la结束(true,false)
  print a.replace(' ','_')            将a中空格替换成下划线
  print 语句中不能。。。。
  print a.split('_')  以下划线为分隔符,切分成list
DSC00037.png

  索引切片         [start:end:step(步长)]
字符串的切片
  # encoding=utf8
  a='today is a %s day %s'%('good','lia')
  print '',a
  print '0                     -10'
  print '0:5 ',a[0:5]
  print '1:5 ',a[1:5]
  print '1:-1 ',a[1:-1]
  print '-2:-1',a[-2:-1]                    ???
  print '-1:-2',a[-1:-2]      切片是从左到右,所以从右到左没有值
  print a[-2:-3:-1]                           ???
  print a[::-1]               #每个单词反转
DSC00038.png

练习
  #encoding=utf8
  a='abcdefghijklmnopqrstuvwxyz'
  print a.find('i')
  print a[-3:-1]
  print a[23:26:]
  print a[7:10]
  print a[15:19:]
  for i in range(26):
  if (i%2):
  a=a[:i]+','+a[i+1:]#   字符串本身不能直接赋值,利用切片的方法改变字符串的值
  print a
  a='abcdefghijklmnopqrstuvwxyz'
  print a[::-1]
  l=len(a)
  print l
  import sys
  for i in range(l):
  if (i%4==0):
  print a[i:i+4],
  if(i+4>l):
  sys.stdout.write('*'*(4-l%4))
  #       sys.stdout.write输出无空格而且不换行
  #       '*'*n          将*输出n次
DSC00039.png

列表的切片
  #encoding=utf8
  l=[]
  l=[1,2,3,4]
  l=list('abcd')
  print l
  print l[1]
  print l[1:3]                  数空空    0a1b2c3d
  print len(l)
  ll=[1,2]+[3,4]             列表的拼接
  print ll
DSC00040.png

  print '---------------------'
  l2=[]
  l2.append('haha')#  追加
  print l2
  for i in range(100):
  l2.append(i)
  print l2
  l4=[[0],[],[2]]
  print l4[1:]
  l3=[1,2,3,4]
  l3.insert(3,0)              insert(位置,值)
  print l3
  l4=['a','b','c','a','c']
  print l4.count('c')     统计字符出现的次数
  l4.sort()
  print l4
  l4.reverse()      反转
  print l4
  del l4[2]             删除
  print l4
DSC00041.png

  append()返回值为None
DSC00042.png

DSC00043.png

常用方法
  pop()                                弹出最后一个值,list中就没有这个值了
  extend()                              把两个列表加在一起
  append()                             往列表里,添加元素
  reverse()                              反转
  del l4[2]                                删除
  insert(位置,值)        插入
  count('c')                             统计字符(c)出现的次数
isinstance
  #encoding=utf8
  L=[1,2,5,6,2,6,4,3,2,'waa']
  import types
  print [_ for _ in L if isinstance(_,types.IntType)]#   如果是int类型,才输出
  print [_ * 10 for _ in L if isinstance(_,types.IntType)]#  给每个值*10输出
DSC00044.png

  #去重
  L1=[1,2,5,6,2,6,4,3,2]
  rs = []
  [rs.append(_) for _ in L1 if _ not in rs]
  print rs
  L1=[1,2,5,6,2,6,4,3,2]
  print [_ for _ in L1 if (L1.index(_)+1) %2==0]
  print "------------"
  m=[1,3,4,2,5,6,2,7,3,2,7,10]
  n=[2,5,8,2,4,3]
  same = []
  diff = []
  [same.append(_) for _ in n if _  in m if _ not in same]
  [diff.append(_) for _ in n if _ not in m]
  [diff.append(_) for _ in m if _ not in n if_ not in diff]
  print same
  print diff

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-552260-1-1.html 上篇帖子: 【三】Python List列表,及切片 下篇帖子: 运维python拓展(一) urllib2使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表