20140421

1. 三大利器:

dir----列出所有内部方法

a=1

dir(a) 可以列出所有内部方法,就是带两个下划线的;带一个下划线的是普通方法

help---查看帮助

help(a.bit_length)

type---查看数据类型

type(a)

2. str类型的神奇用法

结果 解释说明
"hello"+"world" "helloworld" 连接
’hello‘*3 "hellohellohello" 重复
“hello”[0] "h"        第一个位置
"hello"[-1] "o" 最后一个位置
"hello"[::-1] "olleh" 反转
"hello"[1:4] "ell" 取片段,右边界不包含
len("hello") 5 求长度
"hello"<"jello" 1 字符串比较
"e" in "hello" 1  
"escapes:\n etc,\033 etc, \if etc"    
'single quotes' '''triple quotes''' r''raw strings''   r''表示不会转义,正则表达式中多用
"The %s is %d" %('abc',12)    

3. 容器

  • list ,包括:元素可变---[],元素异构---a=[33,"hiboy",["i', 'am"]]

常用list操作方法

 
操作 结果 解释说明
a = range(5) 5 #[0,1,2,3,4]
a.pop() None #[0,1,2,3,4]
a.reverse() None #[4,3,2,1,0]
a.sort() None #[0,1,2,3,4]
a.insert(0,42) None #[42,0,1,2,3,4]在第一个位置插入42
a.append(['another','list']) None #[0,1,2,3,4,['another','list']]
a.extend(['another','list']) None #[0,1,2,3,4,'another','list']
a=[0]*3   #[0,0,0]
  • tuple,元组 包括:元素不可变;元素异构:记住c(0,)逗号必须有,不然就认成别的了
  • dict---key不可变,value可变 a={key:value};元素异构;
 
描述 解释说明
a={} 空字典
b={'x':3,'y':4}  
c={' uid':105,'login':' beazley',' name':' David Beazley'}  
   
u=c[' uid'] 获取一个元素值
c[' shell']="/bin/sh" 赋值
c['login']=23  
b.get('Perl','unknown') 结果是:unknown
b.keys() 结果是:[x,y]
b.values() [3,4]
b.items() [('y',4),('x',3)]
d=b.copy():del b['x']

b:{'y':4},d:{'x':3,'y':4}

b[2]=3:b.update(d)

b:{'y':4,2:3},d:{'x':3,'y':4,'2':3}

dict常用于:遍历

items() keys() values()

iteritems() iterkeys() itervalues() --- 元素超过1w时建议使用,效率高;除此之外下面3个和上面的功能没有区别

4. 控制

  • if 不多说了
  • for有个神奇的地方:

mylist = "for statement"

for word in mylist:

  print word

else:#最终执行

  print "End list"

  • while不多说

break --终止当前循环

continue--终止本次循环

pass:什么事都不做

  • 由于python不支持switch,故可以使用dict模拟switch:

def f1(a):

  print 1,a

def f2(b):

  print 2,b

def default(d):

  print 'default',4

sw={

  'f1':f1,

  'f2':f2,

  'default':default,

}

sw['f1'](4) #1 4

sw['f2'](5) #2 5

sw['default'](8) #default 4

5. 变量,无须声明,初始化等,id(变量名)能够识别是哪个变量的引用 a=1;b=1

6. 灵活无比的函数

deffuncname(arg1,arg2=0,*arg3,**arg4): #分别声明普通参数,元组参数,dict字典参数。一个函数中只可以有一个元组和一个字典

  """doc文档描述放这里"""

  statments

  return xx

例如:def gcd(a,b):

  "this is self definition"

  while a!=0:

    a,b=b%a,a

  return b

>>>gcd.__doc__

"this is self definition"

>>>gcd(12,20)

4

又如:

def h(*t):print t

>>>h(1)

(1,)

>>>h(1,2,3,5,6,7)

(1,2,3,5,6,7)

def k(**d):print d

>>>k(m=1,n=2)

{'m':1,'n':2}

  • 函数作用域规则:Local(局部) -> Global(全局) ->Built-in(内置)->NameError异常
  • Python没有函数重载,因为函数是没类型的
  • python函数可以返回多个值么?可以的 tuple
  • 下面函数有什么问题?
  • def func(in,out):print in.out out=2;有问题,关键字不可以用,会覆盖原有意义

核心库:

os sys string getopt StringIO struct pickle...

正则库

re module

网络库

socket httplib htmllib ftplib smtplib lxml...

在线参考

标准库:http://docs.python.org/library/index.html

ppt中的作业,实现如下:遇到的问题是,&&要用and代替;range(m,n)是指从m开始到n-1;raw_input()返回的类型默认是string的,用在这里还需要用isdigit()转换一下,因此改用input();print(),打印后不换行,但有一个空格,还没找到好的去除方法

import sys
n = input("Pls input your number:")
for i in range(1,n+1):
for j in range(1,i+1):
# if (j%2==0) and (i%2==0):
#sys.stdout.write("*")
# print "*",
if (j==(i/2+1)) and (i%2==1):
print "!",
else:
print "*",
print "\n"

下面程序的输出是a,c. for each in alist:each相当于有一个指针。each指向第一个元素的时候,打印a;同时remove掉a;这时alist长度变化了,原先第一个元素变成了b;each指针向下走,变成了a;a被打印出来了。因此,这个程序的教训是:不要随意改变列表长度。

alist = ['a','b','c','d']

for each in alist:

  print each  

  alist.remove(each)

模块查找路径依次是:sys.path -- PYTHONPATH -- site-packages

接下来的程序是很常见的用于自测自定义程序是否work的:

#!/usr/bin/python

if __name__=='__main__':

  print 'This program is being run by itself'

else:

  print 'I am bneing imported from another module'

包:包是一个目录树,每个目录下都有一个__init__.py文件

包工具:目前主要是pip;安装包:pip install/uninstall simplejson

类定义中的:

类方法classmethod:整个类只有这么一个方法,

statcitmethod

例子:实现一个堆栈

class Stack(object):

"A well-known data structure..."

def __init__(self): #构造函数

  self.items = []

def push(self,x):

  self.items.append(x)

def pop(self):

  x=self.items[-1]

  del self.items[-1]

  return x

def empty(self):

  return len(self.items)==0

x=Stack()

x.empty()  # True

x.push(1)  # [1]

x.empty()  # False

x.push("hello")  # [1,"hello"]

x.pop()  #hello

x.items  #[1]

类 - 继承

class SchoolMember(object):

'''Rmpresents any school member.'''

def __init__(self,name,age):

  self.name = name

  self.age - age

  print '(Initialized SchoolMember:%s)' % self.name

def tell(self):

'''Tell my details.'''

  print 'Name:"%s" Age:"%s"' %(self.name,self.age),

class Teacher(SchoolMember):

'''Represents a teacher.'''

def __init__(self,name,age,salary):

  SchoolMember.__init__(self,name,age)

  self.salary = salary

  print '(Initialized Teacher:%s)' % self.name

def tell(self):

  SchoolMember.tell(self)

  print 'Salary:"%d"' % self.salary

class Student(SchoolMember):

def __init__(self,name,age,score):

SchoolMember.__init__(self,name,age)

self.score = score

t=Teacher('Mrs.Shrividya',40,30000) #实例化

s = Student('Swaroop',22,75)

t.tell()

s.tell()

python培训拾遗的更多相关文章

  1. 智普教育Python培训之Python开发视频教程网络爬虫实战项目

    网络爬虫项目实训:看我如何下载韩寒博客文章Python视频 01.mp4 网络爬虫项目实训:看我如何下载韩寒博客文章Python视频 02.mp4 网络爬虫项目实训:看我如何下载韩寒博客文章Pytho ...

  2. 2015老男孩Python培训第八期视频教程

    2015老男孩Python培训第八期视频教程,希望您通过本教程的学习,能学会常用方法和技巧.教程从基础知识开始讲解一直到后期的案例实战,完全零基础学习,从初学者的角度探讨分析问题,循序渐进由易到难,确 ...

  3. 老王Python培训视频教程(价值500元)【基础进阶项目篇 – 完整版】

    老王Python培训视频教程(价值500元)[基础进阶项目篇 – 完整版] 教学大纲python基础篇1-25课时1.虚拟机安装ubuntu开发环境,第一个程序:hello python! (配置开发 ...

  4. 关于智普 - 千人免费学|Python培训|国内最权威python培训|html5

    关于智普 - 千人免费学|Python培训|国内最权威python培训|html5 智普教育隶属于北京顶嵌开源科技有限公司,成立于2008年. 智普开源是基于Linux系统的互联网开源学习平台,讲求务 ...

  5. 测试开发Python培训:实现屌丝的图片收藏愿望(小插曲)

    测试开发Python培训:实现屌丝的图片收藏愿望(小插曲) 男学员在学习python的自动化过程中对于爬虫很感兴趣,有些学员就想能收藏一些图片,供自己欣赏.作为讲师只能是满足愿望,帮助大家实现对美的追 ...

  6. 测试开发Python培训:模拟登录新浪微博-技术篇

    测试开发Python培训:模拟登录新浪微博-技术篇   一般一个初学者项目的起点就是登陆功能的自动化,而面临的项目不同实现的技术难度是不一样的,poptest在做测试开发培训中更加关注技术难点,掌握技 ...

  7. 测试开发Python培训:抓取新浪微博抓取数据-技术篇

    测试开发Python培训:抓取新浪微博抓取数据-技术篇   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest的se ...

  8. 测试开发Python培训:自动发布新浪微博-技术篇

    测试开发Python培训:自动发布新浪微博-技术篇   在前面我们教大家如何登陆,大家需要先看自动登陆新浪微博(http://www.cnblogs.com/laoli0201/articles/48 ...

  9. 测试开发Python培训:抓取新浪微博评论提取目标数据-技术篇

    测试开发Python培训:抓取新浪微博评论提取目标数据-技术篇   在前面我分享了几个新浪微博的自动化脚本的实现,下面我们继续实现新的需求,功能需求如下: 1,登陆微博 2,抓取评论页内容3,用正则表 ...

随机推荐

  1. Django--分页器(paginator)、Django的用户认证、Django的FORM表单

    分页器(paginator) >>> from django.core.paginator import Paginator >>> objects = ['joh ...

  2. QByteArray和十六进制的QString(char*)相互转换

    #include <QCoreApplication> #include <QDebug> #include <QDataStream> QByteArray He ...

  3. jq实现跟随鼠标点击移动的下划线效果

    效果如下: 1.html代码: <div class="center-left-tap"> <a href="javascript:void (0)&q ...

  4. Linux下安装Tomcat服务器

    Linux下安装Tomcat服务器 一.总结 一句话总结: linux多用才能熟 1.阿里云上面我们买的服务器,怎么让它可以访问特定的端口? 就是给服务器的安全组添加规则:实例-->更多--&g ...

  5. dp的刷表法和填表法

    dp的刷表法和填表法 参考: 动态规划刷表法 - acmer_xue的博客 - CSDN博客http://blog.csdn.net/qq_30241305/article/details/52198 ...

  6. 89、tensorflow使用GPU并行计算

    ''' Created on May 25, 2017 @author: p0079482 ''' # 分布式深度学习模型训练模式 # 在一台机器的多个GPU上并行训练深度学习模型 from date ...

  7. 通过angular.js实现MVC的基本步骤

    通过ng实现MVC的基本步骤: ①创建模块 var app = angular.module('模块名字',['依赖模块1','依赖模块2']) ②调用模块 ngApp--> ng-app=&q ...

  8. PAT_A1131#Subway Map

    Source: PAT A1131 Subway Map (30 分) Description: In the big cities, the subway systems always look s ...

  9. Leetcode代码复盘_分治法相关

    分治法 1.二分搜索(算法时间复杂度O(log n)) 输出:如果x=A[j],则输出j,否则输出0. 1.binarysearch(1,n) 过程:binarysearch(low,high) 1. ...

  10. overflow:hidden失效

    overflow:hidden失效 为了页面的健壮性,我们常常需要使用overflow:hidden.有时候是为了防止布局被撑开,有时候是为了配合其它规则实现文字截断,还有时候纯粹是为了创建块级上下文 ...